2

事前構成されたオブジェクトをコントローラーに渡す良い方法を見つけたいと思います。以下のように IoC を使用できることを知っています。

Mycontroller extends extends \Illuminate\Routing\Controllers\Controller {

    //i can only use one config uless i pass Request data
    $this->config = App::make('MyconfigObject');

}

しかし、これには 1 つの構成しか使用できないという制限があるようです。私はむしろ次のようなことをしたい:

Route::get('some-route', function()
{
    $config = Config::get('some.config');
    $object = new MyConfigObject($config);
    Route::dispatch(MyController($object));
});

これを行う理由は、同じコントローラーをディスパッチしたいが、いくつかのルートの構成が異なるためです。

4

1 に答える 1

1

私はこの方法に完全に満足しているわけではありませんが、IoCの自動解像度を使用して、これまでに思いついた中で最高の方法です。

bootstrap / 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;
    }
}
于 2013-03-21T19:11:57.780 に答える