是否可以将实例绑定到laravel 4中的资源控制器的方法参数?
这是一个好主意吗?如果我只有一个方法需要一个对象,是否值得将它作为构造函数参数包含在内?
应用/ routes.php文件
Route::Resource('track', 'TrackController');
应用/控制器/ TrackController.php
class TrackController extends BaseController {
public function __construct(/Foo/Bar p1, /Foo/Baz p2)
{
// All these bindings seem to work
}
public function show($id, /Foo/Xyz $xyz)
{
// This binding doesn't work, even though the exact same binding
// in the constructor will work.
}
}
答案 0 :(得分:1)
自动分辨率仅适用于构造函数:
当一个类型未绑定在容器中时,它将使用PHP的Reflection工具来检查类并读取构造函数的类型提示。使用此信息,容器可以自动构建类的实例。
在这种情况下你能做的最好的事情可能是:
class TrackController extends BaseController {
public function __construct(/Foo/Bar p1, /Foo/Baz p2, /Foo/Xyz $xyz)
{
$this->xyz = $xyz;
}
public function show($id)
{
echo $this->xyz->property;
}
}