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;
}