如何在codeIgniter中创建自定义挂钩?

时间:2015-03-24 11:01:23

标签: php codeigniter hook

我在codeIgniter中创建了一个PHP应用程序,并希望使用钩子灵活性。但是,codeIgniter中的钩子数量有限,所以我想创建自己的钩子。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您应该打开system/core/Codeigniter.php并查看钩子被调用的位置以及页面生命周期的哪个部分。

在线 299 你有一个钩子被调用,然后$class被初始化,然后另一个钩子被调用。

$EXT->_call_hook('pre_controller');

$CI = new $class();

$EXT->_call_hook('pre_controller_constructor');

所以正在发生的事情是Codeigniter将获取pre_controller挂钩列表并在$class初始化之前执行它们。初始化$class并且__constructor执行此操作后,__pre_controller_constructor挂钩列表将被执行。

那么$CI = new $class()是什么?

$class来自路由器,此时已经初始化

因此,如果网址指向mysite.com/category/products,那么$class=='category'那么真正发生的是$CI = new Category(); // application/controllers/category.php

如果在行 232 上的函数function &get_instance(){}之前调用了一个钩子,那么由于尚未创建该函数,您将无法访问super object。那时你单独处理PHP并且无法访问框架。

关于钩子的完整文档可以在这里找到 https://ellislab.com/codeigniter/user-guide/general/hooks.html