也许我的问题很模糊,所以让我说清楚。我已经创建了一个控制器文件,比如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
为空
答案 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;
}
但我不明白为什么你需要其他控制器实例?也许你可以使用图书馆或普通班级。