mirror of
https://github.com/yiisoft/yii.git
synced 2026-03-12 02:56:55 +01:00
86 lines
5.8 KiB
Plaintext
86 lines
5.8 KiB
Plaintext
Использование сторонних библиотек
|
||
=================================
|
||
|
||
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
|
||
модели, валидацию и т.д.
|
||
|
||
<div class="revision">$Id: extension.integration.txt 3431 2011-11-03 00:53:44Z alexander.makarow@gmail.com $</div> |