Ich benutze Slim Framework 3. Ich möchte $logger
in dependencies.php
in eine Router Controller-Klasse injizieren. Unten ist was ich tue, gibt es einen besseren Weg?
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');
}
}
In Schlanke Rahmen 3-Dokumentation sollte die richtige Art und Weise einer Route-Controller zu verwenden sein:
$app->get('/test', 'AccountController:test');
Aber wie spritze ich $logger
in AccountController, wenn ich meinen Route Controller auf diese "elegantere" Weise codiere?
Danke! Wie kann ich diese Information verpassen? Ich habe den Container durch: Funktion __construct (Slim \ Container $ ci) –
Dies ist nicht die richtige Art, Logger zu Ihrem Controller zu injizieren. Weil Sie in diesem Beispiel den Container selbst injizieren. Es ist nicht der richtige Weg.Du kannst Robs Antwort überprüfen, denke ich. http://Stackoverflow.com/a/36517681/721600 – hkulekci
@hkulekci Ja, ich erwähnte das im Rest meiner Antwort. – alexw