Как расширить сервис Doctrine в Symfony2? - PullRequest
1 голос
/ 10 марта 2012

Я хотел бы добавить некоторые методы в сервис Doctrine в Symfony2. Как я могу это сделать? Должен ли я расширить какой-то класс и зарегистрировать его как сервис? Я бы предпочел, чтобы служба оставалась под названием «доктрина».

Ответы [ 2 ]

1 голос
/ 10 марта 2012

Вы должны расширить класс 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

В этом последнем случае вы должны убедиться, что ваш пакет загружен ПОСЛЕ пакетов ядра.

0 голосов
/ 10 марта 2012

Вы можете указать класс-оболочку для соединения и указать собственные методы внутри него. Я использовал это раньше, чтобы расширить функциональность DBAL в Doctrine, и это хорошо сработало для моего варианта использования.

Подробности здесь:

https://stackoverflow.com/a/8242438/312962

...