Використання сторонніх бібліотек
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));
Підключення бібліотек, що використовують простори імен
Для того, щоб підключити бібліотеку, що використовує простір імен відповідно до угоди PSR-0 (наприклад, Zend Framework 2 або Symfony2), необхідно зареєструвати її корінь як псевдонім шляху.
У якості прикладу будемо використовувати Imagine. Якщо ми скопіюємо директорію Imagine
в protected/vendors
, то використовувати бібліотеку можна буде наступним чином:
Yii::setPathOfAlias('Imagine',Yii::getPathOfAlias('application.vendors.Imagine')); // Далі стандартний код із керівництва Imagine: // $imagine = new Imagine\Gd\Imagine(); // і т.д.
У наведеному вище коді імʼя заданого нами псевдоніма має відповідати першій частині простору імен, яке використовується в бібліотеці.
Використання Yii у сторонніх системах
Yii може бути використаний як бібліотека для розробки і поліпшення сторонніх систем, таких як WordPress, Joomla та інших. Для того, щоб скористатися Yii необхідно включити наведений нижче код у сторонню систему:
require_once('шлях/до/yii.php'); Yii::createWebApplication('шлях/до/config.php');
Даний код дуже схожий на той, який використовується в index.php
звичайного додатку. Відмінність у тому, що після створення екземпляра додатку не викликається метод run()
.
Тепер при розробці сторонньої системи можна використовувати більшість можливостей Yii. Наприклад, для отримання доступу до екземпляра додатку можна використовувати Yii::app()
. Також можна використовувати DAO, ActiveRecord моделі, валідацію і т.д.