Files
yii/docs/guide/uk/extension.integration.txt

62 lines
5.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Використання сторонніх бібліотек
================================
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>