如何在Symfony 2中不是服务的类中访问容器

时间:2011-06-16 22:09:10

标签: symfony

我的config.yml

中定义了一项服务
services:
  kinorm_pdo:
    class: Pate\KinormBundle\Dbal\Db
    arguments: [%kinorm.db_driver%,%kinorm.db_user%,%kinorm.db_pass%,%kinorm.db_name%,%kinorm.db_host%,%kinorm.db_charset%]

但我希望能够在不是控制器的类中访问此服务,并且我不了解如何在不注入容器的情况下访问容器。

基本上我只想做

$user = new User();

并且允许内部$ user访问容器...

感谢您的任何建议!

1 个答案:

答案 0 :(得分:4)

好吧,你没有从对象内部直接访问控制器,除非你注入它(顺便说一句,这很可能是一个坏主意)......但如果你想要从您的User类中获取kinorm_pdo服务,只需注入 (假设您从容器感知上下文中实例化该类):

$user = new User($this->container->get('kinorm_pdo'));

甚至

$user = new User();
$user->setPdo($this->container->get('kinorm_pdo'));

请注意,听起来你正试图从实体内部提供对数据库的访问...... separation of concerns说这可能不是完成你想要做的任何事情的最干净的方法......如果你提供一些关于你想要完成的事情的更多信息,我们也可以帮助你。