Hallo Ich mache eine PHP-Anwendung mit Silex und ich möchte Dependency Injection verwenden. Für Dependency Injection muss ich die Abhängigkeiten in den Container laden. Ich habe eine Datei, die alle Definitionen enthält, was in den Container namens di.php geladen werden soll. Es sieht so aus.Sollen bei jeder Anfrage alle Abhängigkeiten geladen werden?
/**
* DI.php
*/
$app['db.connection'] = function() use($app) {
return new Connection([
'dbname' => $app['dbname'],
'dbuser' => $app['dbuser'],
'dbpass' => $app['dbpass'],
'dbhost' => $app['dbhost'],
]);
};
$app['user.repository'] = function() use($app) {
return new UserRepository($app['db.connection']);
};
$app['post.repository'] = function() use($app) {
return new PostRepository($app['db.connection']);
};
$app['index.controller'] = function() use($app) {
return new IndexController($app['user.repository']);
};
$app['post.controller'] = function() use($app) {
return new PostController($app['post.repository']);
};
aber diese Datei bei jeder Anforderung angefordert wird und alle Abhängigkeiten werden in den Container geladen, ist meine Frage, wie kann ich die Abhängigkeiten laden, die ich nur für eine Anfrage benötigen und noch nicht alles.
Sie definieren Callback-Funktionen, die diese Objektinstanzen * zurückgeben, wenn sie * aufgerufen werden. Ich weiß nichts über Silex, aber wenn nicht jemand diese Funktionen aufruft, werden die Objekte nicht geladen/instanziiert. – deceze