你好我正在使用Silex制作PHP应用程序,我想使用依赖注入。对于依赖注入,我需要将依赖关系加载到容器中。我有一个文件,其中包含加载到名为di.php的容器中的所有定义,它看起来像这样。是否应该在每个请求上加载所有依赖项?
/**
* 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']);
};
但该文件要求对每个请求和所有的依赖都装到集装箱里,我的问题是我怎么能加载,我只需要一个请求,而不是所有的依赖。
您正在定义回调函数,该函数在调用*时会返回这些对象实例*。我不知道Silex,但除非有人调用这些函数,否则这些对象将不会被加载/实例化。 – deceze