我的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访问容器...
感谢您的任何建议!
答案 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说这可能不是完成你想要做的任何事情的最干净的方法......如果你提供一些关于你想要完成的事情的更多信息,我们也可以帮助你。