Использование сторонних библиотек ================================= Yii изначально спроектирован таким образом, чтобы использование сторонних библиотек с целью расширения функциональности Yii, происходило легко и непринужденно. Очень часто при использовании в работе сторонних библиотек разработчики сталкиваются с проблемами именования классов и подключения файлов. Поскольку все классы Yii имеют префикс `C`, то вероятность возникновения конфликтов имён существенно ниже. А благодаря тому, что для подключения файлов Yii использует [автозагрузку SPL](http://php.net/manual/en/function.spl-autoload.php), работа с библиотеками, использующими для подключения файлов классов этот механизм автозагрузки или же относительный путь подключения в РНР (PHP include path), становится существенно приятнее. Ниже приведён пример, иллюстрирующий использование в Yii приложении компонента [Zend_Search_Lucene](http://www.zendframework.com/manual/en/zend.search.lucene.html) из [Zend Framework](http://www.zendframework.com). Первым делом, распаковываем релиз с Zend Framework в директорию `protected/vendors`, где `protected` — это [базовая директория приложения](/doc/guide/basics.application#application-base-directory). Убедитесь в том, что файл `protected/vendors/Zend/Search/Lucene.php` существует. Далее, в самом начале файла, содержащего класс контроллера, добавляем строку: ~~~ [php] Yii::import('application.vendors.*'); require_once('Zend/Search/Lucene.php'); ~~~ Код, приведённый выше, подключает файл `Lucene.php`. Поскольку используется относительный путь, то необходимо изменить относительный путь подключения в РНР (PHP include path) таким образом, чтобы приложение могло найти файл. Делается это путём вызова метода `Yii::import` перед `require_once`. После того как проделано всё описанное, можно использовать класс `Lucene` в действиях контроллера следующим образом: ~~~ [php] $lucene=new Zend_Search_Lucene($pathOfIndex); $hits=$lucene->find(strtolower($keyword)); ~~~ Подключение библиотек, использующих пространства имён ----------------------------------------------------- Для того чтобы подключить библиотеку, использующую пространство имён согласно соглашению [PSR-0](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md) (например, Zend Framework 2 или Symfony2), необходимо зарегистрировать её корень как псевдоним пути. В качестве примера будем использовать [Imagine](https://github.com/avalanche123/Imagine). Если мы скопируем директорию `Imagine` в `protected/vendors`, то использовать библиотеку можно будет следующим образом: ~~~ [php] Yii::setPathOfAlias('Imagine',Yii::getPathOfAlias('application.vendors.Imagine')); // Далее стандартный код из руководства Imagine: // $imagine = new Imagine\Gd\Imagine(); // и т.д. ~~~ В приведённом выше коде имя заданного нами псевдонима должно соответствовать первой части пространства имён, которое используется в библиотеке. Использование Yii в сторонних системах -------------------------------------- Yii может быть использован как библиотека для разработки и улучшения сторонних систем, таких как WordPress, Joomla и других. Для того чтобы воспользоваться Yii, необходимо включить приведённый ниже код в стороннюю систему: ~~~ [php] require_once('путь/к/yii.php'); Yii::createWebApplication('путь/к/config.php'); ~~~ Приведённый код очень похож на тот, который используется в `index.php` обычного приложения. Отличие состоит в том, что после создания экземпляра приложения не вызывается метод `run()`. Теперь при разработке сторонней системы можно использовать большинство возможностей Yii. Например, для получения доступа к экземпляру приложения можно использовать `Yii::app()`. Также можно использовать DAO, ActiveRecord модели, валидацию и т.д.