Использование сторонних библиотек

Yii изначально спроектирован таким образом, чтобы использование сторонних библиотек с целью расширения функциональности Yii, происходило легко и непринужденно. Очень часто при использовании в работе сторонних библиотек разработчики сталкиваются с проблемами именования классов и подключения файлов. Поскольку все классы Yii имеют префикс C, то вероятность возникновения конфликтов имён существенно ниже. А благодаря тому, что для подключения файлов Yii использует автозагрузку SPL, работа с библиотеками, использующими для подключения файлов классов этот механизм автозагрузки или же относительный путь подключения в РНР (PHP include path), становится существенно приятнее.

Ниже приведён пример, иллюстрирующий использование в Yii приложении компонента Zend_Search_Lucene из Zend Framework.

Первым делом, распаковываем релиз с Zend Framework в директорию protected/vendors, где protected — это базовая директория приложения. Убедитесь в том, что файл protected/vendors/Zend/Search/Lucene.php существует.

Далее, в самом начале файла, содержащего класс контроллера, добавляем строку:

Yii::import('application.vendors.*');
require_once('Zend/Search/Lucene.php');

Код, приведённый выше, подключает файл Lucene.php. Поскольку используется относительный путь, то необходимо изменить относительный путь подключения в РНР (PHP include path) таким образом, чтобы приложение могло найти файл. Делается это путём вызова метода Yii::import перед require_once.

После того как проделано всё описанное, можно использовать класс Lucene в действиях контроллера следующим образом:

$lucene=new Zend_Search_Lucene($pathOfIndex);
$hits=$lucene->find(strtolower($keyword));

1. Подключение библиотек, использующих пространства имён

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

В качестве примера будем использовать Imagine. Если мы скопируем директорию Imagine в protected/vendors, то использовать библиотеку можно будет следующим образом:

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

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

2. Использование Yii в сторонних системах

Yii может быть использован как библиотека для разработки и улучшения сторонних систем, таких как WordPress, Joomla и других. Для того чтобы воспользоваться Yii, необходимо включить приведённый ниже код в стороннюю систему:

require_once('путь/к/yii.php');
Yii::createWebApplication('путь/к/config.php');

Приведённый код очень похож на тот, который используется в index.php обычного приложения. Отличие состоит в том, что после создания экземпляра приложения не вызывается метод run().

Теперь при разработке сторонней системы можно использовать большинство возможностей Yii. Например, для получения доступа к экземпляру приложения можно использовать Yii::app(). Также можно использовать DAO, ActiveRecord модели, валидацию и т.д.

Be the first person to leave a comment

Please to leave your comment.