首页 > 代码库 > php钩子程序设计
php钩子程序设计
<style></style>
序
作为程序员,设计出优雅而完美的系统,永远是让我们非常兴奋的事情。高手不在于你会多少语言,而在于你有多高的思想。
在设计中,怎么体现自身价值,那就是要比别人多想几步。
讲钩子程序,起源是对用户提交的参数校验(永远不要相信用户),一开始为了赶工期,按照比较传统的方式,每个接口里重复性的对参数进行过滤。后面随着业务的发展(功能迭代),系统的维护成本越来越高,遂想一个更高级的方式进行处理。故想到使用钩子方式。
脉路
概念
把一段程序块(执行体)通过某种方式挂入系统中,从而获得对系统的控制权。
应用场景
小的方面: 进行基础的入参校验或消息过滤。
大的方面:组件化,可在系统中进行插拔管理。
优点:
1、降低系统的耦合度;
2、降低开发、测试人力成本,用少量的代码实现高可用功能;
3、提高模块间的可用性;
4、通过配置(配置文件or数据库)的方式升级接口。
缺点:
学习成本过高;
系统复杂度提升;
具体实现
配置文件的方式进行钩子定义、钩子链管理(使用“组”的概念)、挂钩。
钩子:程序执行体;
钩子组: 钩子链的分类定义;
挂钩: 入口(MVC中action或者controller)与钩子组进行绑定。
挂钩代码类(继承类):
<?php/** * @name Service_Page_Test * @desc page层对接第三方抽象类 * @author */abstract class Service_Page_Test { public $hookGroupPrev = null; // 前钩子组 public $hookGroupAfter = null; // 前钩子组 public $hookReturn = array(); //钩子返回值 public $reqData = http://www.mamicode.com/null; // page模块分析的数据>
hook.conf
[group][.check_req_customer]0 : checkReqCustomerBaseInfo[.after_demo]0 : afterDemo[hook][.checkReqCustomerBaseInfo]class: Service_Page_Hook_Customermethod: checkBaseInfogetInputParams: _getCheckParams[.afterDemo]class: Service_Page_Hook_Customermethod: afterDemogetInputParams: _getCheckParams
page.conf
[Service_Page_Input][.hook_group][..prev]0 : check_req_customer[..after]0 : after_demo
推荐
php钩子程序设计
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。