Php 如何在codeIgniter中创建自定义挂钩?
我正在用codeIgniter制作一个PHP应用程序,希望使用钩子实现灵活性。然而,codeIgniter中的钩子数量有限,所以我想创建自己的钩子Php 如何在codeIgniter中创建自定义挂钩?,php,codeigniter,hook,Php,Codeigniter,Hook,我正在用codeIgniter制作一个PHP应用程序,希望使用钩子实现灵活性。然而,codeIgniter中的钩子数量有限,所以我想创建自己的钩子 如何实现这一点?您应该打开system/core/Codeigniter.php,查看钩子在哪里被调用,以及页面生命周期中的哪个部分 在第299行中,调用了一个钩子,然后初始化了一个$class,然后调用了另一个钩子 $EXT->_call_hook('pre_controller'); $CI = new $class(); $EXT-&
如何实现这一点?您应该打开
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
并且\u构造函数
完成了它的工作之后,\u pre\u controller\u构造函数
钩子列表将被执行
那么什么是$CI=new$class()
$class
来自路由器,此时路由器已经初始化
因此,如果url指向的是mysite.com/category/products
,那么$class=='category'
那么真正发生的是这个$CI=new category();//application/controllers/category.php
如果在函数&get_instance(){}
第232行232之前调用了钩子,那么您将无法访问超级对象,因为函数尚未创建。此时,您将无法单独处理PHP,也无法访问该框架
关于钩子的完整文档可以在这里找到