thinkphp中的钩子_什么是钩子?
什么 thinkphp 钩子
2023-09-27 14:26:59 时间
讲到插件,不得不讲钩子。首先,我们之前说明了插件是一个扩展的功能实现。
既然是扩展的,那么就要很灵活、可复用,并不是像我们之前开发项目,一个功能实现了,就写死在代码里了。
项目其他地方要用了,怎么办,复制一份改个名,改的那个地方能调用实现。这样一次两次可以,次数多了就不行了。
因为后面每次开发的底层架构在不断变化。不断重复的功能版本造成人力的浪费。我们做成插件的目的就是为了方便大家扩展我们这个产品的功能。到时候形成规模,大家自由的搭建自己的站点就方便了。
那么如何让一个扩展的功能在多个地方可随意的使用呢。那就用到了我们的钩子。
为什么叫它钩子呢?因为它的作用就是如此和生活中的钩子类似。
打个比方,我们做的网站比作一个有多个功能的立式衣架。
这个衣架给什么人用就有不同的用途。
假如你专门用来挂大衣的,那就是大衣衣架。如果你专门挂袋子,那就是一个储物衣架。
当你不想要某个挂件、衣服时,取下来即可。并不会破坏原有的袋子或者衣服的功能。
你挂与不挂,钩子就在那里。
为什么能挂那么多东西呢?说明被挂的东西都符合一个标准:能挂的住。
换作你挂一个橡皮泥、或者棉花之类的。挂不了多久就会掉了。因为他们不符合要有部分封闭的可固定的这一个部分的标准。
还有挂一个太重的比如10个背包挂一个钩子上。要么架子毁了,要么钩子断了。总之就是挂不住。
因为任何一个钩子都有其承重上限。你加起来的超过了,肯定不行。
所以我们不能把插件当成万能的使,什么东西都整成插件,不管功能的大小。
任何系统都有瓶颈,你不能把个重量级的东西做成插件后挂上,说不定以后就会影响整个站点。就违背了插件的独立性原则。那些就不应该做成插件而是做成模型扩展或者应用扩展。
相关文章
- mysql中/*!40000 DROP DATABASE IF EXISTS `top_server`*/;这中注释有什么作用?
- 编程语言理解3-目前主流的编程语言有哪些,分别的应用场景是什么
- 「测试猿课堂」软件测试入门必学课 一分钟秒懂什么是软件测试?
- 什么是包装类?为什么要有包装类?基本类型与包装类如何转换?
- 什么是Java的多态?
- K8s 暴露服务的新方法 Gateway API 详解,它有什么好处?
- 《数据分析实战 基于EXCEL和SPSS系列工具的实践》一1.2 数据分析能给我们带来什么
- 抄到尽处,即是颠覆。如果抄都抄不下来,模仿都模仿不下来,那说明什么...自己思考
- 鸿蒙基础之 ohos.aafwk.kability 包有什么用(HarmonyOS鸿蒙开发基础知识)
- 《UVM实战》——1.1节UVM是什么
- 什么是正版系统
- 什么是史诗、特性、用户故事和任务