一个类的实例化如何适用于Laravel中的不同路径

时间:2018-01-19 05:53:30

标签: php laravel

也许我的问题很模糊,所以让我说清楚。我已经创建了一个控制器文件,比如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
}

如果调用someRouteDefinedInRouteFile() $this->instance,则必须具有SomeController的实例。但在致电someAnotherRoute()后,$this->instance为空

2 个答案:

答案 0 :(得分:2)

这是因为这些方法是在单独的请求中执行的。如果要使用相同的实例,请使用IoC在控制器构造函数中注入类。

protected $istance;
public function __construct(Instance $instance)
{
    $this->instance = $instance;
}

然后,您就可以在任何控制器的方法中使用它。

答案 1 :(得分:1)

如果要在所有方法中使用实例,必须在构造函数中设置或创建setter方法,并在每个需要使用实例的方法中调用此方法。

示例:

1:

`public function someRouteDefinedInRouteFile(SomeController $instance) {
   $this->instance = $instance; // now $this->instance must have SomeController instance
   return $this->instance;
}

2:

function getInstanceSomeController(){
   return new SomeController;
}

但我不明白为什么你需要其他控制器实例?也许你可以使用图书馆或普通班级。