Как правильно интегрировать стороннюю библиотеку в проект Symfony2

Я работаю над проектом Symfony 2.2, в котором мне нужно загрузить видео в Vimeo. Я использую расширенный API Vimeo через Vimeo.php (официальная библиотека Vimeo)

Мне удалось добавить пространство имен в библиотеку и добавить его в папку объектов в моем пакете, потому что это единственный способ, которым проект обнаруживал библиотеку.

<?php
**namespace MediaBundle\Entity;**

use Symfony\Component\Security\Core\Exception\InvalidCsrfTokenException as Exception;

class Vimeo
{
    .... Vimeo.php Code ....
}
?>

Я пытаюсь найти лучший способ интегрировать эту библиотеку в свой код. Я попытался поместить в папку vendor/vimeo и автоматически загрузить его из app/autoload.php.

Без пространства имен:

$loader->registerPrefixes(array(
    'Vimeo_' => __DIR__.'/../vendor/vimeo/lib',
));

С пространством имен:

$loader->registerNamespaces(array(
    'Vimeo' => __DIR__.'/../vendor/vimeo/lib',
));

Класс по-прежнему не распознается в контроллере.

Чтобы автоматизировать процесс, я попытался использовать пакет композитора dukt/vimeo, это в основном та же библиотека, просто обертка в композитор. Он помещает его в autoload_namespaces.php, но я все еще не могу использовать его ни в одном контроллере. Его всегда не найти.

Возможно, я не ставлю правильный оператор использования. Код autoload_namespaces.php:

'Dukt\\Vimeo' => $vendorDir . '/dukt/vimeo/src/',

В /dukt/vimeo/src есть класс Vimeo.php с namespace Dukt;. Каким должен быть мой оператор использования в контроллере?

Пожалуйста, дайте мне знать, как лучше всего интегрировать стороннюю библиотеку в мои проекты Symfony2. Я бы продолжил использовать его через объект, но я получаю некоторые ошибки, я думаю, что API не работает должным образом из объекта из-за ошибок пути обратного вызова. Хотя я могу ошибаться. Тем не менее, я хотел бы правильно включить его.


person Ajeet Varma    schedule 26.03.2013    source источник


Ответы (1)


Установите пакет-оболочку через Composer. Он будет обрабатывать все материалы автозагрузки.

person Elnur Abdurrakhimov    schedule 26.03.2013
comment
Спасибо за ответ. Я уже пытался установить пакет. Он даже устанавливается нормально, добавляет в файл autoload_namespaces.php, но оператор use все еще не может найти нужный мне класс. Пожалуйста, прочитайте вторую половину вопроса для получения подробной информации об этом. Спасибо еще раз. - person Ajeet Varma; 26.03.2013
comment
Поскольку библиотека не имеет пространства имен, то оператор «использовать» будет не очень полезен. Вместо этого добавьте перед именем класса обратную косую черту. Что-то вроде: $vimeo = new \phpVimeo(); - person Cerad; 26.03.2013
comment
Имя класса в пакете было изменено с phpVimeo на Vimeo, и кажется, что оно находится в пространстве имен с Dukt; Итак, я пробовал \Dukt(), \Dukt\Vimeo(), \Vimeo(), и ничего не работает. Я не знаю, почему включение простой библиотеки вызывает столько проблем. Пожалуйста, дайте мне знать, если у вас есть другие идеи. Спасибо! - person Ajeet Varma; 28.03.2013