这篇文章运用简单易懂的例子给大家介绍php中装饰者模式的使用,代码非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
站在用户的角度思考问题,与客户深入沟通,找到番禺网站设计与番禺网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站制作、成都做网站、企业官网、英文网站、手机端网站、网站推广、域名申请、网站空间、企业邮箱。业务覆盖番禺地区。
概述
装饰者模式是动态的给对象添加新的职责。装饰者模式提供了一个比使用子类继承更加灵活的拓展功能的方法。装饰者模式解决的单纯使用子类继承的方法来对类的功能进行拓展的两个问题:1) 功能多了之后的子类爆炸 2) 继承不能够动态的在运行时添加功能。装饰者模式的出现,是为了解决被装饰者有很多的可能的子功能,而且这些子功能还需要能够自由的组合的问题。
使用装饰者模式实现维护Session实现。
一、没有使用装饰者模式,需要对模块(WelcomeController::index方法)进行修改。
class WelcomeController { public function index() { echo 'session start.', PHP_EOL; echo 'hello!', PHP_EOL; echo 'session close.', PHP_EOL; } }
二、使用装饰者模式,$pipeList表示需要执行的中间件数组。关键在于使用了array_reduce函数。
class WelcomeController { public function index() { echo 'hello!', PHP_EOL; } } interface Middleware { public function handle(Closure $next); } class Seesion implements Middleware { public function handle(Closure $next) { echo 'session start.', PHP_EOL; $next(); echo 'session close.', PHP_EOL; } } $pipeList = [ "Seesion", ]; function _go($step, $className) { return function () use ($step, $className) { $o = new $className(); return $o->handle($step); }; } $go = array_reduce($pipeList, '_go', function () { return call_user_func([new WelcomeController(), 'index']); }); $go();
关于php中装饰者模式的使用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。