Quber
@Quber
PHP Team lead

Symfony2: Как в контейнер служб добавить класс из папки vendor?

Собственно сабж. Скачал стороннюю библиотеку из GitHub. Залил в папку vendor. Подключил в автозагрузке новое пространство имён. Хочу в контролёре вызвать так:
$foo = $this->get('bar');
пока получается только так:
use \bar;
$bar = new Bar();

У меня получалось через файл services.yml, но только если библиотека находится в бандле, тогда в пути прописываем пространство имён и всё. Если библиотека находится за пределом бандла (как у меня), аля vendor, то так уже не работает:
services:
    foo:
        class: \Bar

Подскажите пожалуйста как определить класс из папки vendor как службу! Или необходимо библиотеку обязательно перенести в бандл? Заранее благодарю!
  • Вопрос задан
  • 2980 просмотров
Решения вопроса 1
@zloyusr
Для контейнера нет разницы где физически расположен файл. Это забота автозагрузчика. Если вы зарегистрировали сервис в services.yml:
services:
    fooService:
        class: \Bar

То он будет доступен в контроллере:
$foo = $this->get('fooService');
Но для интеграции сторонней библиотеки, я бы рекомендовал создать отдельный бандл и хранить всю конфигурацию сервисов в services.yml этого бандла.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы