B Yii включили в репозиторий packagist.org, теперь можно использовать один менеджер зависимостей Composer для обновления и фреймворка, и дополнительных библиотек.

  • Устанавливаем Composer. Для Windows есть инсталлятор. B Linux или MacOS нужно выполнить несколько команд из консоли.
  • Создаём папку для приложения, например yii-composer. Т.е. приложение доступно по адресу http://localhost/yii-composer
  • Создаем composer.json - хранятся названия компонентов, которые будет загружать Composer { "require": { "yiisoft/yii": "dev-master", "imagine/Imagine": "dev-master" } }
  • Загружаем компоненты. Для этого нужно выполнить команду: composer install или composer update
  • В результате Composer загрузит указанные пакеты, и создаст структуру папок. Composer создал папку vendor и загрузил в неё библиотеки imagine и фреймворк
  • Создаем приложение - стандартную утилиту yiic. Если приложение должно находиться в папке public_html, то из папки /vendor/yiisoft/yii/framework выполняем команду yiic webapp ../../../../public_html Yiic создаст нужные файлы, и мы увидим результат по адресу. http://localhost/yii-composer/public_html
  • Подключаем библиотеки, загруженные с помощью Composer. Composer автоматически создаёт загрузчик (файл vendor/autoload.php), который соответствует спецификации PSR-0. На практике это означает, что для того, чтобы использовать библиотеки, загруженные с помощью Composer, достаточно подключить загрузчик в файле index.php фреймворка, то есть
require_once('../vendor/autoload.php');
Теперь можно использовать Imagine. 
$imagine = new Imagine\Gd\Imagine();

При создании объекта необходимо путь к классу Imagine начиная от папки vendor/imagine/lib. Т.е. фактически без разницы, где именно Composer хранит библиотеки. Можно использовать примеры из документации к Imagine без какой-либо дополнительной настройки. Достигается это за счёт того, что Composer автоматически создаёт файл vendor/composer/autoload_namespaces.php, который возвращает реальное размещение библиотек. В данном случае:

return array(
    'Imagine' => $vendorDir . '/imagine/Imagine/lib/',
);

Leave a Comment

Fields with * are required.

Please enter the letters as they are shown in the image above.
Letters are not case-sensitive.