<rmcreative>

RSS

Yii: автозагрузка библиотек, использующих namespace

3 ноября 2011

Для загрузки библиотек, использующих namespace по соглашению PSR-0 (например, Zend Framework 2 или Symfony2) необходимо сначала зарегистрировать корень библиотеки как псевдоним пути.

Для примера попробуем использовать Imagine. Скорируем директорию Imagine в protected/vendors. Ну и само использование:

Yii::setPathOfAlias('Imagine',Yii::getPathOfAlias('application.vendors.Imagine'));
 
 
// Далее стандартный код из README Imagine:
// $imagine = new Imagine\Gd\Imagine();
// и т.д.

В приведённом коде имя псевдонима пути должно совпадать с первой частью namespace, которая используется в библиотеке.

Данное описание со следующим релизом попадёт в официальный гайд.

Комментарии RSS

  1. №5576
    Максим
    Максим 04.11.2011, 1:23:37

    Не до конца понял что это такое и как работает... То есть теперь можно будет писать ?

    new zii\widgets\grid\CGridView
  2. №5577
    Sam
    Sam 04.11.2011, 1:35:48

    Ну, если CGridView у тебя в namespace, то да.

  3. №5578
    mrix
    mrix 04.11.2011, 7:44:57

    Сейчас в проекте использую namespace. Не работает автозагрузчик консольных команд. Сделал также, как с контроллерами в web-приложении, т.е. прописал в commandMap (в web - controllerMap), задал нужный alias, но файлы с классами команд найти не может.

    Я пока не стал ковыряться и оставил команды в глобальном пространстве имён. Sam, не сталкивался с таким?

  4. №5579
    Максим
    Максим 04.11.2011, 12:54:16

    2sam, То есть ? Эта фича касается только ns ?

  5. №5580
    Sam
    Sam 04.11.2011, 18:12:53

    mrix, нет, пока не сталкивался.

    Максим, да.

  6. №8542
    Sobit
    Sobit 06.11.2013, 17:10:29

    А что насчет вот такой библиотеки: github.com/symfony/Filesystem

    У нее составной namespace. Сработает ли:

    Yii::setPathOfAlias('Symfony\Component\Filesystem',Yii::getPathOfAlias('application.vendors.symfony.Filesystem'));
  7. №8543
    Sam
    Sam 06.11.2013, 21:23:25

    Должно.

  8. №9992
    x8core
    x8core 19.09.2015, 0:01:43

    Этого не достаточно.

    Yii::setPathOfAlias('Imagine', Yii::getPathOfAlias('application.vendors.Imagine'));

    Нужно например описать где лучше прописать этот код. Можно ли через конфиг объявить namespace. В идеале полный пример кода с объяснением где лежит внешняя либа и т.д. и т.п.

    Потом с одной строкой использование либы.

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.