Зависимости Symfony2 - PullRequest
       11

Зависимости Symfony2

6 голосов
/ 31 мая 2011

Мне интересно, есть ли правильный способ проверить зависимости.

Например, у меня есть NewsBundle.Теперь я должен проверить, есть ли CommentBundle.Если он есть, он должен выполнить еще несколько кодов.

Есть предложения?

Ответы [ 3 ]

28 голосов
/ 08 июня 2011

В дополнение к ответу Markymark, вы можете проверить, существует ли конкретная услуга от вашего контроллера (или любого другого кода, поддерживающего контейнер) со следующим фрагментом:

if ($this->container->has('foo_service.alias'))
{
    // service is loaded and usable
}

Есливы не уверены в точном псевдониме данного сервиса или просто для того, чтобы пнуть и посмеяться, вы можете запустить консольную команду php app/console container:debug, чтобы увидеть все сервисы, зарегистрированные в контейнере.

2 голосов
/ 01 июня 2011

Вы можете использовать class_exists в основном классе Bundle, который должен иметь каждый пакет.

Например:

if (class_exists('Acme\CommentBundle\AcmeCommentBundle'))
{
    // Bundle exists and is loaded by AppKernel...
}
0 голосов
/ 16 декабря 2014

Класс Kernel содержит список вспомогательных методов для проверки того, является ли определенный класс частью активного пакета или зарегистрирован ли пакет.

public BundleInterface[] getBundles()
    Gets the registered bundle instances.

public bool isClassInActiveBundle(string $class)
    Checks if a given class name belongs to an active bundle.
...