Я хотел бы добавить несколько методов в службу Doctrine в Symfony2. Как я могу это сделать? Должен ли я расширить какой-то класс и зарегистрировать его как службу? Я бы предпочел, чтобы сервис оставался под названием «доктрина».
Как расширить службу Doctrine в Symfony2?
Ответы (2)
Вы должны расширить класс Symfony\Bundle\DoctrineBundle\Registry
и добавить собственные методы.
Затем все, что вам нужно сделать, это определить службу, например, в app/config/config.yml, которая называется «doctrine»:
// app/config/config.yml
services:
doctrine:
class: MyDoctrineRegistry
arguments: [ @service_container ]
Службы, определенные в config.yml, будут загружены последними, поэтому они переопределяют службы по умолчанию.
Если вы хотите быть более чистым, вам нужно переопределить службу в DependencyInjection/Extension, используя:
$container->setAlias('doctrine', 'my_doctrine'); // my_doctrine is the name of you custom doctrine service
В этом последнем случае вы должны убедиться, что ваш пакет загружается ПОСЛЕ основных пакетов.
parent
, который делает вашу службу наследуемой от родительского определения. вы можете попробовать заменить arguments
на parent: doctrine
- person Florian Klein; 16.03.2012
Вы можете указать класс-оболочку для соединения и указать в нем пользовательские методы. Я использовал это раньше, чтобы расширить функциональность Doctrine DBAL, и это сработало очень хорошо для моего варианта использования.
Подробности здесь:
https://stackoverflow.com/a/8242438/312962