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