我想找到一种将预配置对象传递给控制器的好方法。我知道我可以像下面这样使用IoC:
Mycontroller extends extends \Illuminate\Routing\Controllers\Controller {
//i can only use one config uless i pass Request data
$this->config = App::make('MyconfigObject');
}
但这似乎只有能够使用一个配置的限制。我宁愿做以下事情:
Route::get('some-route', function()
{
$config = Config::get('some.config');
$object = new MyConfigObject($config);
Route::dispatch(MyController($object));
});
我想这样做的原因是我想调度相同的控制器,但是有几种路由的配置不同。
答案 0 :(得分:1)
我对这种方法并不完全满意,但到目前为止,我已经提出了最好的方法,使用IoC的自动分辨率。
自举/ stat.php
/*
* bindings to the IoC container
*/
$app->singleton('MyNamespace\Transfer\TransferStategyInterface', function() {
$config = Config::get('transfer-strategy');
return new LocalTransferStrategy($config);
});
use MyNamespace\Transfer\TransferStategyInterface;
TransferController.php
use MyNamespace\Transfer\TransferStategyInterface;
class TransferController extends BaseController {
protected $transferStrategy;
public function __construct(TransferStategyInterface $transferStrategy = null)
{
$this->transferStrategy = $transferStrategy;
}
}