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');
        }
    }
  • 相关阅读:
    FindData_查找数据库中所有相关的字符
    删除所有的视图,存储过程
    游标
    常用sql收藏
    Java学习笔记15--引用传递
    Java学习笔记14--动态代理
    Java学习笔记13--比较器(Comparable、Comparator)
    Java学习笔记11--Annotation
    Java学习笔记12--国际化
    Java学习笔记10--枚举
  • 原文地址:https://www.cnblogs.com/orlion/p/5595974.html
Copyright © 2011-2022 走看看