Использовать компонент Symfony 2 в проекте, отличном от Symfony?

Для получения поддержки XLIFF / 2 в PHP в другом ответе было предложено использовать компонент Symfony 2 Translation.

Поэтому я загрузил его из Github в каталог ../vendor/ и наивно пытался его использовать:

 <?php require_once '../vendor/Symfony/Component/Translation/Translator.php'; require_once '../vendor/Symfony/Component/Translation/MessageSelector.php'; require_once '../vendor/Symfony/Component/Translation/Loader/ArrayLoader.php'; use Symfony\Component\Translation\Translator; use Symfony\Component\Translation\MessageSelector; use Symfony\Component\Translation\Loader\ArrayLoader; $translator = new Translator('fr_FR', new MessageSelector()); 

Это не работает, поскольку необходимо загрузить другие компоненты:

 PHP Fatal error: Interface 'Symfony\\Component\\Translation\\TranslatorInterface' not found in /home/ec2-user/layout/vendor/Symfony/Component/Translation/Translator.php on line 25 

Теперь я могу вручную добавить require_once для каждого файла, пока все зависимости не будут выполнены, но я не уверен, что это правильный подход.

Как использовать один компонент Symfony 2 в проекте, отличном от Symfony? Это плохая идея?

    Управляйте своими зависимостями с композитором .

    Сначала создайте файл composer.json в папке проекта:

     { "require": { "symfony/translation": "2.4.*" } } 

    Затем загрузите композитор и запустите его:

     wget http://getcomposer.org/composer.phar php composer.phar install 

    Теперь вы можете использовать свой компонент, импортировав автозагрузчик композитора:

     <?php require_once('vendor/autoload.php'); use Symfony\Component\Translation\Translator; use Symfony\Component\Translation\MessageSelector; use Symfony\Component\Translation\Loader\ArrayLoader; $translator = new Translator('fr_FR', new MessageSelector()); $translator->setFallbackLocales(array('fr')); $translator->addLoader('array', new ArrayLoader()); $translator->addResource('array', array( 'Hello World!' => 'Bonjour', ), 'fr'); echo $translator->trans('Hello World!')."\n"; 

    Как использовать Composer для управления вашими зависимостями.

    Дело здесь в том, что он также управляет автозагрузкой,

    Из документации ,

    Автозагрузка #

    Помимо загрузки библиотеки Composer также готовит файл автозагрузки, способный автоматически загружать все классы в любую из загружаемых им библиотек. Чтобы использовать его, просто добавьте следующую строку в процесс начальной загрузки кода:

     require 'vendor/autoload.php';