Slim Framework 3を使用しています。に定義されている$logger
をRouter Controllerクラスに注入したいとします。私がしていることは以下の通りです。よりよい方法はありますか?スリムフレームワーク3ドキュメントで
routes.phpの
$app->get('/test', function($request, $response, $args){
$controller = new AccountController($this->get('logger'));
return $controller->test($request, $response, $args);
});
AccountController
class AccountController{
private $logger;
function __construct($logger){
$this->logger = $logger;
}
public function test($request, $response, $args){
$this->logger->info('i am inside controller');
return $response->withHeader('Content-Type', 'application/json')->write('test');
}
}
、ルートコントローラを使用しての適切な方法は、次のようになります。
$app->get('/test', 'AccountController:test');
しかし、どのように私はを注射するのですか?をAccountControllerに追加すると、ルートコントローラーをよりエレガントな方法でコーディングすることができます。
ありがとうございます!どのように私はその情報を欠場することができます!私はコンテナを持っています:function __construct(Slim \ Container $ ci) –
これはあなたのコントローラにロガーを注入する正しい方法ではありません。この例では、コンテナ自体を注入します。それは正しい方法ではありません。私はロブの答えをチェックすることができます。 http://stackoverflow.com/a/36517681/721600 – hkulekci
@hkulekciはい、私は残りの答えに言及しました。 – alexw