在 Codeigniter 中 hook 的目的是啥?为啥我们要创造?
Posted
技术标签:
【中文标题】在 Codeigniter 中 hook 的目的是啥?为啥我们要创造?【英文标题】:In Codeigniter what is the purpose of hook ? Why we have to create?在 Codeigniter 中 hook 的目的是什么?为什么我们要创造? 【发布时间】:2017-01-05 02:46:33 【问题描述】:我是 Codeigniter 的新手。在每次采访中,都询问了钩子。我不明白什么是钩子为什么我必须使用它?它有什么好处。
【问题讨论】:
查看 Stack Overflow 的这个问题***.com/q/23805693/3081659 你读过这个codeigniter.com/user_guide/general/hooks.html 我已经读过,但我没有得到钩子的目的 - syed Noman 感谢您的帮助 @HinaVaja 在功能上就像_constructor
。 _constructor
将始终在该控制器中使用的每个方法下调用。每次控制器启动时都会钩住其负载。查看此视频youtube.com/watch?v=S6-tPYHW374
【参考方案1】:
这是在 codeigniter 中使用它的示例链接
https://qasimbadami.wordpress.com/2012/05/18/codeigniter-hooks-tutorial/
注意:假设你有一个大项目和近 100 个控制器,如果每次检查会话是否存在,每个 post 请求 而不是使用钩子
【讨论】:
【参考方案2】:将钩子视为 codeigniter 中的中间件实现。 基本上,您可以扩展框架的基本功能,将代码添加到请求生命周期的特定时刻。
这是 codeigniter 2 中可用的钩子列表
以下是可用挂钩点的列表。
pre_system 在系统执行过程中很早就被调用。只有 此时已经加载了基准和钩子类。无路由 或发生了其他过程。
pre_controller 立即调用 在调用任何控制器之前。所有基类, 路由和安全检查已完成。
post_controller_constructor 在你的控制器之后立即调用 被实例化,但在任何方法调用发生之前。
post_controller 在控制器完全运行后立即调用 执行。
display_override 覆盖 _display() 函数,用于 在系统结束时将最终页面发送到网络浏览器 执行。这允许您使用自己的显示方法。笔记 您需要使用 $this->CI =& 来引用 CI 超级对象 get_instance() 然后最终的数据将由 调用 $this->CI->output->get_output()
cache_override 使您能够 调用你自己的函数而不是 _display_cache() 函数 输出类。这允许您使用自己的缓存显示 机制。
post_system 在最终呈现的页面发送到后调用 浏览器,在系统执行结束后数据最终确定 发送到浏览器。
【讨论】:
以上是关于在 Codeigniter 中 hook 的目的是啥?为啥我们要创造?的主要内容,如果未能解决你的问题,请参考以下文章
hook Android 权限请求, 插入权限目的dialog显示