本文实例讲述了php中钩子(hook)的原理与简单应用。分享给大家供大家参考,具体如下:
我们先来回顾下原本的开发流程;
产品汪搞出了一堆需求;
当用户注册成功后需要发送短信、发送邮件等等;
然后聪明机智勇敢的程序猿们就一扑而上;
把这些需求转换成代码扔在 用户注册成功 和 跳转到首页 之间;
没有什么能够阻挡;充满创造力的猿们;
<?php class Test{ public function index(){ // 用户注册成功 /* 此处是一堆发送短信的代码 */ /* 此处是一堆发送邮件的代码 */ /* 此处是一堆其他功能的代码 */ // 前往网站首页 } } $test=new Test(); $test->index();
如果每个功能都由不同的猿完成的话;
首先面临的就是代码会很杂乱;配合起来会比较麻烦;
那封装成函数吧;一方面会规范整洁写;另外方便重复调用;
没有什么能够阻挡;充满创造力的猿们;
<?php class Test{ public function index(){ // 用户注册成功 // 发送短信 sendSms($phone); // 发送邮件 sendSms($email); // 其他操作... // 前往网站首页 } } /** * 发送短信通知 * @param integer $phone 手机号 */ function sendSMS($phone){ // 此处是发送短信的代码 } /** * 发送邮件通知 * @param string $email 邮箱地址 */ function sendEmail($email){ // 此处是发送邮件的代码 }
这时候运营喵表示;
如果能在后台点点按钮就能设置是发邮件还是发短信;那想必是极好的;
没有什么能够阻挡;充满创造力的猿们;
<?php class Test{ public function index(){ // 用户注册成功 if ('如果设置了发送短信') { // 发送短信 sendSms($phone); } if ('如果设置了发送邮件') { // 发送邮件 sendSms($email); } // 其他操作... // 前往网站首页 } } /** * 发送短信通知 * @param integer $phone 手机号 */ function sendSMS($phone){ // 此处是发送短信的代码 } /** * 发送邮件通知 * @param string $email 邮箱地址 */ function sendEmail($email){ // 此处是发送邮件的代码 }
在一个封闭企业环境下这样搞是没有问题的;
然鹅;我们还有一位开放无私的猿领导要把程序开源出去造福其他猿类;
希望有更多的猿类来参与这个项目;共同开发功能;
如果大家都去改动这套程序;把自己的代码扔在 用户注册成功 和 跳转到首页 之间;
这显然是不靠谱的;想想都混乱的一塌糊涂;
那可不可以大家把自己写的代码放到某个目录下;