Вы можете использовать Dependency Injection и добавить свою модель в файл services.yml, и, как и любой другой сервис, который вы делаете, вы можете предоставлять другие сервисы в качестве параметров конструктора. Единственный недостаток - вы звоните $derp = $this->get("your_service_name");
вместо $derp = new Derp();
.
Например:
# src/Derp/LolBundle/Resources/config/services.yml
services:
derp:
class: \Derp\LolBundle\Entity\Message
arguments: [@service_container]
@service_container
- услуга, найденная с использованием php app/console container:debug
. Он будет функционировать идентично $this->container
в ваших контроллерах и предоставляется конструктору вашего класса. См. здесь для получения дополнительной информации о том, как использовать сервисные контейнеры.
Как уже упоминалось ранее, это POPO (простые старые объекты PHP), и предыдущий метод внедрения зависимостей является плохим выбором, просто потому, что вам придется помнить, что объект вашей модели должен предоставлять один и тот же объект каждый раз, когда вы его используете сервисы Symfony2 - это способ смягчить эту боль.