我在我的供应商文件夹中获得了一些我在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');
感谢大家的帮助。
答案 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)
您可以在
中定义服务C:\xampp\htdocs\myproject\app\config\services.yml
Resources\config
目录。见How to Load Service Configuration inside a Bundle。您只需通过为服务命名,指定类,然后列出在实例化时必须将类注入其中的任何参数来定义服务。要引用 parameters.yml 中的参数,请将参数的名称包装在%%
中,如下所示。
services:
my_project.some_service:
class: Vendor\Class\Name\Here
arguments: ['%some.parameter.name%']
在99%的场景中,您绝对应该不将依赖注入容器注入您自己的类中。让你的类依赖于容器是不好的 - 让它们依赖于项目中的其他服务或简单的值,如字符串,整数等。