【问题标题】:Symfony services container is imported but how?Symfony 服务容器已导入,但如何导入?
【发布时间】:2014-03-31 20:23:27
【问题描述】:

我必须对 Symfony 项目进行修改,我目前想知道这个项目是如何工作的。

它在 Company/Bundle/Resources/config 中有一个 services.php 文件,用于管理服务的实例化,但它没有在任何地方导入...

我查看了 app/config/config.yml、config_dev.yml、config_prod.yml、security.yml 等,但没有此文件的导入!

我知道它被应用程序使用,但我不知道它是如何导入的:/。

【问题讨论】:

  • Symfony 使用自动加载器来自动加载服务。先检查那里。
  • 但是所有服务配置都必须以一种或另一种方式从 config.yml 文件中导入。我想知道在这种情况下它是如何导入的。

标签: php symfony


【解决方案1】:

它是否使用 DependenctInjection 服务?查看文档here

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;

$container = new ContainerBuilder();
$loader = new PhpFileLoader($container, new FileLocator(__DIR__));
$loader->load('services.php');

这将在 symfony 应用程序初始化时自动加载服务。

【讨论】:

  • 确实如此!但它使用这些类来代替:使用 Symfony\Component\DependencyInjection\Definition;使用 Symfony\Component\DependencyInjection\Reference;使用 Symfony\Component\DependencyInjection\Parameter;使用 Symfony\Component\DependencyInjection\DefinitionDecorator;同样在我的文件中,它立即开始使用 $container 变量。我想知道它是在哪里实例化的。
  • 啊,它是在扩展 Etension 的类中实例化的。
  • 很高兴你找到它。
猜你喜欢
  • 1970-01-01
  • 2012-08-23
  • 1970-01-01
  • 2013-11-28
  • 1970-01-01
  • 2021-12-14
  • 2018-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多