zoukankan      html  css  js  c++  java
  • Minor【 PHP框架】6.代理

    框架Github地址:github.com/Orlion/Minor

    (如果觉得还不错给个star哦(^-^)V)

    框架作者: Orlion

    知乎:https://www.zhihu.com/people/orlion

    Github: https://github.com/Orlion

    6.1 代理

      Minor提供了一个类似于java中InvocationHandler接口和一个Proxy类的代理模式的实现,具体可参考我的这篇文章:http://www.cnblogs.com/orlion/p/5350752.html

      6.1.1 使用

      

    class FooController extends Controller
    {
        public function bar($productName)
        {
           
            $log = new LogHandler();
            $shop = new Shop();
            $shopProxy = Proxy::newProxyInstance($shop, $log);
            $shopProxy->buy($productName);
    
        }
    }
    <?php
    
    namespace AppLib;
    
    use MinorProxyInvocationHandler;
    
    class LogHandler implements InvocationHandler
    {
        public function invoke($target, ReflectionMethod $method, Array $args = [])
        {
            $this->before();
            $result = $method->invokeArgs($target, $args);
            $this->after();
    
            return $result;
        }
    
        public function before()
        {
            echo '[LogHandler] before<br/><br/>';
        }
    
        public function after()
        {
            echo '[LogHandler] after<br/><br/>';
        }
    }
    <?php
    
    namespace AppLib;
    
    class Shop
    {
    
        private $mail = null;
    
        public function boot(MailProvider $mail)
        {
            $this->mail = $mail;
        }
    
        public function buy($productName)
        {
            echo '[Shop] buy ' . $productName . '<br/><br/>';
            !is_null($this->mail) && $this->mail->send('DemoUser');
        }
    }
  • 相关阅读:
    Model I/O
    How to create realistic .scn files?
    3ds Max 教程
    ELK Stack企业日志平台文档
    源码搭建Zabbix4.0.23LTS监控系统
    Ansible自动化运维应用实战
    网站架构部署
    MySQL数据库性能优化与监控实战(阶段四)
    MySQL数据库企业集群项目实战(阶段三)
    基于xtrabackup的主从同步
  • 原文地址:https://www.cnblogs.com/orlion/p/5595974.html
Copyright © 2011-2022 走看看