系统加载预处理扩展
通过 Filter_Plugin_Zbp_Load_Pre 接口,可以在 Z-BlogPHP 的 Zbp::Load() 最前部、正式加载数据之前执行预处理逻辑。
接口信息
| 接口 | 参数 | 说明 |
|---|---|---|
Filter_Plugin_Zbp_Load_Pre | 无 | Zbp 类的加载(预处理)接口 |
完整案例
下例在数据加载前依据 User-Agent 判断移动端,并把标记存入全局供后续模板与过滤器使用:
php
<?php
RegisterPlugin("demoAPP", "ActivePlugin_demoAPP");
function ActivePlugin_demoAPP()
{
Add_Filter_Plugin('Filter_Plugin_Zbp_Load_Pre', 'demoAPP_Zbp_Load_Pre');
}
function demoAPP_Zbp_Load_Pre()
{
$ua = GetVars('HTTP_USER_AGENT', 'SERVER', '');
// 在系统加载数据前打标记,供 Zbp_Load 或模板逻辑使用
$GLOBALS['demoAPP_is_mobile'] = (stripos($ua, 'mobile') !== false) ? true : false;
}注意事项
- 触发位置在
Zbp::Load()的最前部,早于 Content-type 头发送、会员分类模块加载与登录校验; - 与
Filter_Plugin_Zbp_PreLoad的区别:PreLoad 由c_system_base.php在调用$zbp->Load()之前触发,Load_Pre 已处于Load()流程内部; - 与
Filter_Plugin_Zbp_Load的区别:本接口触发时登录校验与数据加载均未开始,不能依赖$zbp->user等结果; - 命名中的
_Pre即预处理之意,适合做影响本次加载行为的准备工作; - 回调没有参数,且应避免输出任何内容,以免破坏后续发送的 HTTP 头。