Minor【 PHP框架】6.代理
框架Github地址:github.com/Orlion/Minor
(如果觉得还不错给个star哦(^-^)V)
框架作者: Orlion
知乎:https://www.zhihu.com/people/orlion
Github: https://github.com/Orlion
Minor提供了一个类似于java中InvocationHandler接口和一个Proxy类的代理模式的实现,具体可参考我的这篇文章:http://www.cnblogs.com/orlion/p/5350752.html
class FooController extends Controller { public function bar($productName) { $log = new LogHandler(); $shop = new Shop(); $shopProxy = Proxy::newProxyInstance($shop, $log); $shopProxy->buy($productName); } }
<?php namespace App\Lib; use Minor\Proxy\InvocationHandler; 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 App\Lib; 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'); } }