Anu*_*nup 8 php hook codeigniter
我在codeIgniter中创建一个PHP应用程序,并希望使用钩子灵活.但是,codeIgniter中的钩子数量有限,所以我想创建自己的钩子.
我怎样才能做到这一点?
您应该打开system/core/Codeigniter.php并查看钩子在哪里被调用以及在页面生命周期的哪个部分。
在第299行,一个钩子被调用,然后 a$class被初始化,然后另一个钩子被调用。
$EXT->_call_hook('pre_controller');
$CI = new $class();
$EXT->_call_hook('pre_controller_constructor');
Run Code Online (Sandbox Code Playgroud)
所以发生的事情是 Codeigniter 将获取钩子列表并在初始化pre_controller之前执行它们。初始化并执行操作$class后,钩子列表将被执行。$class__constructor__pre_controller_constructor
那么什么是$CI = new $class()?
来自$class路由器,此时路由器已经初始化
所以如果 url 指向mysite.com/category/productsthen$class=='category'那么真正发生的事情是这样的$CI = new Category(); // application/controllers/category.php
如果在第 232function &get_instance(){}行的函数之前调用了一个钩子,那么您将无法访问 ,因为该函数尚未创建。那时您仅处理 PHP,将无法访问该框架。super object
有关钩子的完整文档可以在这里找到 https://ellislab.com/codeigniter/user-guide/general/hooks.html