thinkphp 行为扩展 钩子与插件的实现
在熟悉onthink程序的时候,看到后台有钩子和插件的管理界面。很感兴趣,之前就对行为不怎么理解和使用,借着这次机会好好的研究下。
行为(Behavior)是一个比较抽象的概念,类似于AOP编程中的“切面”的概念,给某一个切面绑定相关行为就成了一种类AOP编程的思想。
在开始之前我们看看它是怎么个流程?
1、注册行为。
2、具体行为的操作。## 标题
3、行为里面如何注册插件。
4、视图的调用。
按照官网的实例,自己亲生的实践一下,下面是我的实践代码。
配置文件:
Application/common/conf/config.php
return array(
//‘配置项’=>‘配置值’
‘AUTOLOAD_NAMESPACE’ => array(‘Addons’ => ‘./Addons/’), //扩展模块列表
);
行为的注册:
Application/Common/Conf/tags.php
return array(
‘Test’ => array(‘Common\Behavior\TestHookBehavior’),
);
TestHookBehavior文件代码:
namespace Common\Behavior;
use Think\Behavior;
use Think\Hook;
class TestHookBehavior extends Behavior {
public function run(&$param) {
echo ‘测试钩子,我接受到的数据是’ . $param.‘
’;
\Think\Hook::add(‘Chajian’, ‘Addons\Chajian\ChajianAddon’);
}
}
插件:
Addons/Chajian/ChajianAddon.class.php
namespace Addons\Chajian;
use THink\Controller;
class ChajianAddon extends Controller {
function Chajian() {
echo ‘我是插件看到了吗?
’;
}
}
视图调用:
Application/Home/View/Index/index.html
{:tag(‘Test’,KaTeX parse error: Expected 'EOF', got '}' at position 7: param)}̲ {:tag('Chajian…param)}
结果:
测试钩子,我接受到的数据是
我是插件看到了吗?