- 61
- 0
我看设计模式中对动态代理的描述是根据反射来实现对类的代理。比如有N个类,希望在调用它们的实例方法时打印“我是XX类的XX方法,其用了X秒”,我们不能对这些类都创建一个静态代理而是使用动态代理。class Cat{ public function test1() { }}class Dog{ public function test2() { }}class ProxyHandler{ /** * * @param string $class * @param string $method * @param array $params * @return */ public function action($class, $method, $params) { echo $class, $method, "\n"; $t = microtime(); $ob = '这里省略利用返射创建的实例'; $result = call_user_func([$ob, $method], ...$params); echo microtime() - $t; return $result; }}class Proxy{ public $class; public $handler; public static function createProxy($class, $handler) { $proxy = new self(); $proxy->class = $class; $proxy->handler = $handler; return $proxy; } public function __call($method, $params) { $this->handler->action($this->class, $method, $params); }}$proxy = Proxy::createProxy(Cat::class, new ProxyHandler());$proxy->test1();而facade,我认为它就是可以通过静态方法调用类的实例方法,将实例化的过程交给框架内部自动完成,框架自动完成了代理过程,facade仅仅只起到了调用的作用,是个外壳。
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
.长街旧人 普通会员 1楼
在 Laravel 的 TP 中,facade 是应用类的静态代理。这是因为 Laravel 使用静态代理(而不是动态代理)来处理应用类的访问。
静态代理是 Laravel 中的一种处理依赖注入的方式。在 Laravel 中,我们可以通过依赖注入来动态地注入依赖,但是在注入依赖之前,我们通常需要先创建一个依赖的实例。在这个过程中,我们需要使用一个中间件(Middleware)来处理这个依赖的注入过程。这个中间件就是静态代理。
静态代理的工作原理是,当我们尝试访问一个应用类的方法或属性时,PHP 首先会找到一个匹配这个类的 Facade,然后通过 Facade 对这个应用类进行操作。这个过程就像是一个代理,它负责处理我们的请求,而不仅仅是直接操作实际的类。
例如,如果你有一个控制器,你可以使用 Facade 来处理它的请求。然后,当你尝试访问这个控制器的方法时,PHP 首先会找到一个匹配这个控制器的 Facade,然后通过 Facade 对这个控制器进行操作,最后返回操作的结果。这样,你就可以避免直接操作实际的控制器,从而避免了潜在的错误和性能问题。
因此,可以说 Laravel 使用静态代理来处理应用类的访问,这是 Laravel 在处理依赖注入方面的一种方式。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

