Php 类的实例化如何在-Laravel中为不同的路由工作
也许我的问题含糊不清,所以让我说清楚。我已经创建了一个控制器文件,比如,Php 类的实例化如何在-Laravel中为不同的路由工作,php,laravel,Php,Laravel,也许我的问题含糊不清,所以让我说清楚。我已经创建了一个控制器文件,比如,SomeController.php,在我的LoginController中,我有: use SomeController; private $instance; public function someRouteDefinedInRouteFile() { $this->instance = new SomeController; // now $this->instance must have So
SomeController.php
,在我的LoginController
中,我有:
use SomeController;
private $instance;
public function someRouteDefinedInRouteFile() {
$this->instance = new SomeController; // now $this->instance must have SomeController instance
return $this->instance;
}
public function someOtherRoute() {
return $this->instance; // it must return the instance but it's null
}
如果调用了
someRoutedDefinedRouteFile()
,$this->instance必须具有SomeController
的实例。但在调用someAnotherRoute()
之后,$this->instance
为null如果您想在所有方法中使用实例,则必须在构造函数或创建setter方法中设置该实例,并在每个要使用实例的方法中调用该方法
示例:
1:
2:
但我不明白为什么你需要另一个控制器实例?也许您可以使用library或general类。这是因为这些方法是在单独的请求期间执行的。如果要使用同一实例,请使用在控制器构造函数中注入类
protected $istance;
public function __construct(Instance $instance)
{
$this->instance = $instance;
}
然后你就可以在任何控制器的方法中使用它了。为什么你不能只使用
$this->instance=newsomecontroller代码>在其他路径中
?它们不在同一个控制器中吗?为什么您需要控制器的实例?如果我使用,比方说,一个通用类,它会像这个控制器一样为空吗???也许use可以使用library或通用类。
--您可以参考一下解释一下吗,谢谢您说得对,我应该使用通用类。但它会工作吗?不会像这个控制器类那样给出null…如果您需要请求实例,您可以将其传递到您的通用类中,如果您需要在当前控制器中使用一些中间件操作。
function getInstanceSomeController(){
return new SomeController;
}
protected $istance;
public function __construct(Instance $instance)
{
$this->instance = $instance;
}