Symfony从vendor文件夹访问parameters.yml

时间:2017-04-20 09:28:23

标签: php symfony

我在我的供应商文件夹中获得了一些我在Symfony项目中使用的自定义类。现在我需要访问位于

中的parameters.yml中的一些参数
C:\xampp\htdocs\myproject\app\config\parameters.yml

在我的常规Symfony代码中,我只是做

$this->getParameter('myparameter');

和所有设置,但不在供应商文件夹中。我想我需要导入一些命名空间,但找不到哪个? 任何帮助,将不胜感激。谢谢。

UPD1 通过将以下代码添加到AppBundle.php来解决此问题

class AppBundle extends Bundle
{
private static $containerInstance = null;

public function setContainer(\Symfony\Component\DependencyInjection\ContainerInterface $container = null)
{
    parent::setContainer($container);
    self::$containerInstance = $container;
}

public static function getContainer()
{
    return self::$containerInstance;
}
}

然后使用以下代码从我的供应商代码调用容器:

use AppBundle\AppBundle;
AppBundle::getContainer()->getParameter('myparameter');

感谢大家的帮助。

2 个答案:

答案 0 :(得分:0)

  

DependencyInjection / YourBundleExtension.php

$container->setParameter('myparameter', $config);

https://symfony.com/doc/current/create_framework/dependency_injection.html#main

之后,将此配置添加到您的服务(例如)

  

资源/配置/ services.yml

services:
your.service:
    class: App\YourBundle\Service\YourService
    arguments:
        - %myparameter%

答案 1 :(得分:0)

您可以在

中定义服务
  1. C:\xampp\htdocs\myproject\app\config\services.yml
  2. 捆绑包的Resources\config目录。见How to Load Service Configuration inside a Bundle
  3. 您只需通过为服务命名,指定类,然后列出在实例化时必须将类注入其中的任何参数来定义服务。要引用 parameters.yml 中的参数,请将参数的名称包装在%%中,如下所示。

    services:
       my_project.some_service:
          class: Vendor\Class\Name\Here
          arguments: ['%some.parameter.name%']
    

    在99%的场景中,您绝对应该将依赖注入容器注入您自己的类中。让你的类依赖于容器是不好的 - 让它们依赖于项目中的其他服务或简单的值,如字符串,整数等。