假设你有一套登录注册业务。一开始很简单,老板说只需要常规的注册登录就行。 但是到了后面,接口被刷,老板然你在注册登录前加个验证码 然后没过多久,老板又说,当用户注册时,我们给用户的邮箱或者手机发一条欢迎短信或者邮件吧 还没过上多久,老板说,当新注册时,我们给手机注册的发送200金币,给邮箱注册的发送100金币,作为注册奖励。 接着没过多久,老板说,如果一个用户超过1个月没登录的话,再次登录时,你给就给他账户发送100金币作为回归奖励, 结果过了不久,老板又说,注册时判断一下他是手机号注册还是邮箱注册,如果是邮箱就跳转 A 页面,如果是手机号就跳转 B 页面 过了一段时间,老板又说,我觉得第二个 idea 不好,我们给他去掉吧。 。。。。 等等,在业务中,我们对一个需求,会遇到各种变更,如果我们不使用 Hook ,就需要去频繁的改动主业务代码,而且还很容易出错,如果像这个情况,我们在一开始在代码中埋下以下 Hook 「收到注册表单」 「收到登录表单」 「注册失败」 「登录失败」 那么我们只需要去处理这些 Hook 就行,丝毫不用去改动原本的代码,而且,如果我们有一天不需要某个功能,直接删除那个功能的模块代码就行。整个流程,我们的核心功能代码都没有发生过变动,如果其中一个无法使用,那我们停用掉那一个就好。 ThinkPHP 3 的核心就是 Hook。Discuz 插件、WordPress 插件、Emlog 插件 核心都是 Hook。
假设你有一套登录注册业务。一开始很简单,老板说只需要常规的注册登录就行。
等等,在业务中,我们对一个需求,会遇到各种变更,如果我们不使用 Hook ,就需要去频繁的改动主业务代码,而且还很容易出错,如果像这个情况,我们在一开始在代码中埋下以下 Hook
那么我们只需要去处理这些 Hook 就行,丝毫不用去改动原本的代码,而且,如果我们有一天不需要某个功能,直接删除那个功能的模块代码就行。整个流程,我们的核心功能代码都没有发生过变动,如果其中一个无法使用,那我们停用掉那一个就好。
ThinkPHP 3 的核心就是 Hook。
Discuz 插件、WordPress 插件、Emlog 插件 核心都是 Hook。