php – Laravel:外观实际上是在调用方法上创建新对象吗?
发布时间:2020-12-14 19:38:45 所属栏目:大数据 来源:网络整理
导读:我有一个通常绑定的演示类 $this-app-bind('demo',function() { return new Demo(); } 一个立面 protected static function getFacadeAccessor() { return 'demo'; } 该类本身看起来像这样 class Demo { private $value1; private $value2; public function
我有一个通常绑定的演示类
$this->app->bind('demo',function() { return new Demo(); } 一个立面 protected static function getFacadeAccessor() { return 'demo'; } 该类本身看起来像这样 class Demo { private $value1; private $value2; public function setVal1($value) { $this->value1 = $value; } public function setVal2($value) { $this->value2 = $value; } public function getVals() { return 'Val 1: ' . $this->value1 . ' Val 2: ' . $this->value2; } } 有人告诉我,如果我在这个类上使用一个Facade,Laravel将实例化该类的一个对象,然后在该对象上调用该方法,如: $app->make['demo']->setVal1(); 我试了一下,发现这个非常奇怪(至少对我而言)的行为: 如果我做 Demo::setVal1('13654'); ?和 Demo::setVal2('random string') 我不应该使用Demo :: getVals()来检索我刚创建的值,不是吗?由于每次使用facade方法时都会实例化一个新对象,一个对象如何检索另一个对象的属性?应该有三个不同的实例,但我仍然可以从其他实例中检索属性… 我认为这只有在用App :: singleton而不是App :: bind绑定类时才有可能吗? 解决方法
Facade仍然只返回一个实例.
但是,您可以使用方法中的新静态返回类的新实例. 我在Laravel论坛上问道,nesl247做了很好的解释. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |