钩子函数和普通函数的区别在哪里

不好说 2016-09-19 05:49:59
比如Thinkphp里面 Hook::listen('app_init'); 用普通函数也可以实现,什么情况下用hook函数?
...全文
1161 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
不好说 2016-09-20
  • 打赏
  • 举报
回复
引用 4 楼 fdipzone 的回复:
tp是在方法里面绑定的,所以和普通调用没有区别。
嗯,明白了,多谢指点!
xuzuning 2016-09-20
  • 打赏
  • 举报
回复
Hook 只是预先在墙上留出了一排挂钩,你可以在那里挂上东西 当然,一旦你挂上了,系统就会在特定的时刻去执行他 TP 是个框架,他并不知道你会做些什么。也不能让你去修改他的代码,改错了就玩完了 但他又需要你去干预他预定的行为,于是就有了 Hook
傲雪星枫 2016-09-20
  • 打赏
  • 举报
回复
tp是在方法里面绑定的,所以和普通调用没有区别。
不好说 2016-09-20
  • 打赏
  • 举报
回复
引用 1 楼 fdipzone 的回复:
其实就是设计模式里面的观察者模式。 把需要处理的事件绑定到一个处理方法,然后这个方法就自动触发处理。 用这种方法可以不需要改动原方法代码,而使用普通方法则需要 例如 function abc(){ // doth } 而我们想执行abc后可以自动执行efg方法 这样就需要使用hook把efg绑定到abc 例如加一句 Hook::listen('abc','efg''); 这样执行完 abc就可以自动执行efg方法,而不需要改动abc代码。
你举的列子挺好的, 但是在thinkphp中,Hook::listen('app_init');这个用普通函数也可以实现,这个就是示例化类,调用方法。没有看到它体现钩子的地方。求教..
傲雪星枫 2016-09-19
  • 打赏
  • 举报
回复
傲雪星枫 2016-09-19
  • 打赏
  • 举报
回复
其实就是设计模式里面的观察者模式。 把需要处理的事件绑定到一个处理方法,然后这个方法就自动触发处理。 用这种方法可以不需要改动原方法代码,而使用普通方法则需要 例如 function abc(){ // doth } 而我们想执行abc后可以自动执行efg方法 这样就需要使用hook把efg绑定到abc 例如加一句 Hook::listen('abc','efg''); 这样执行完 abc就可以自动执行efg方法,而不需要改动abc代码。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧