Как я могу получить доступ к контейнеру в классе, который не является службой в Symfony 2 - PullRequest
1 голос
/ 17 июня 2011

У меня есть служба, определенная в моем 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 Ответ

4 голосов
/ 17 июня 2011

Ну, у вас нет прямого доступа к контроллеру изнутри объекта, если вы не делаете его внедрения (кстати, это, скорее всего, плохая идея) ... но если вы хотите ваша kinorm_pdo служба доступна из вашего класса User, просто введите , что (при условии, что вы создаете экземпляр класса из контекста, осведомленного о контейнере):

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

или даже

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

Обратите внимание, что звучит так, будто вы пытаетесь предоставить доступ к базе данных изнутри сущности ... разделение интересов говорит, что это, вероятно, не самый чистый способ выполнить то, что вы пытаетесь делайте ... если вы предоставите немного больше информации о том, чего вы пытаетесь достичь, мы, вероятно, тоже можем вам в этом помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...