我正在尝试使用Symfony堆栈构建自己的CMS,而且我已经遇到了依赖注入的一些问题。
我想做什么
加载CMS上安装的每个模块的“扩展”,以便合并服务和原则设置。
我在做什么
运行Symfony Flex(Symfony 4)我在src / Kernel.php中:(在configureContainer函数中)
foreach ($this->getInstalledModules() as $module) {
$class = 'App\\Modules\\' . $module . '\\DependencyInjection\\' . $module . 'Extension';
if (class_exists($class)) {
$container->registerExtension(new $class());
}
}
我的模块存储在src/Modules/[module_name]
中,每个模块的依赖项加载器都在src/Modules/[module_name]/DependencyInjection/[module_name]Extension.php
中,名称空间为App\Modules\Articles\DependencyInjection
我对模块的扩展:
class ArticlesExtension extends Extension implements PrependExtensionInterface
{
public function load(array $configs, ContainerBuilder $container)
{
die("LOADING");
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
$loader->load('services.yml');
}
public function prepend(ContainerBuilder $container)
{
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
$loader->load('doctrine.yml');
}
}
正如您所看到的,我为测试目的添加了die
,问题是这不会被执行(有或没有死)。 prepend函数虽然已经执行,但正在相应地注册我的学说实体。
您可以访问以下链接找到我的存储库:http://lab.cirykpopeye.be/cirykpopeye/Cirykpopeye.be/tree/development