我尝试创建一个类来管理我的应用程序的某些部分 但我需要访问resources / config.yml
中的配置我尝试使用containerAware扩展我的类作为控制器 但他没有设置容器......
我希望能够做到这样的事情:
class MyClass extends ContainerAware
{
public function myFunciton()
{
$em = $this->get('Doctrine')->getEntityManager();
}
}
欢迎任何建议
答案 0 :(得分:4)
扩展ContainerAware
不会自动授予对服务容器的访问权限 - 您需要将容器注入您的类。有两种方法可以做到这一点:
@service_container
setContainer()
话虽如此,你不应该将容器注入你的课程。这使得测试类更难。除此之外有一些例外情况,但它们并不经常出现。
相反,您应该只注入所需的服务。对于实体管理器,您将注入@doctrine.orm.default_entity_manager
。
关于从config.yml访问数据,我建议包括文件(可以在定义服务时完成)并使用Symfony\Component\Yaml\Parser
或Symfony\Component\Yaml\Yaml
解析yml。解析器将yml字符串转换为PHP变量,然后您可以轻松使用它。