Användning av tredjepartsbibliotek

Yii är omsorgsfullt konstruerat på så sätt att tredjepartsbibliotek utan svårighet kan integreras för att ytterligare utöka Yii:s funktionalitet. När tredjepartsbibliotek används i ett projekt, stöter utvecklare ofta på problem rörande namngivning av klasser och inkludering av filer. Eftersom alla Yii:s klasser har namn som föregås av bokstaven C, är det mindre risk för att problem kring namngivning av klasser uppstår; och eftersom Yii förlitar sig på SPL autoload för inkludering av klassfiler, kan det friktionsfritt samexistera med andra bibliotek om dessa använder samma autoladdningsfiness, alternativt PHP-inkluderingssökväg för att inkludera klassfiler.

Nedan används ett exempel för att illustrera hur man i en Yii-applikation kan använda komponenten Zend_Search_Lucene från Zend-ramverket.

Extrahera först distributionsfilen innehållande Zend-ramverket till en katalog under protected/vendors, förutsatt att protected är applikationens rotkatalog. Kontrollera att filen protected/vendors/Zend/Search/Lucene.php existerar.

Sätt därefter in följande rader i början av kontrollerns klassfil:

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

Ovanstående kod inkluderar klassfilen Lucene.php. Eftersom en relativ sökväg används, behöver PHP:s inkluderingssökväg ändras så att filen kan lokaliseras korrekt. Detta gör man genom att anropa Yii::import innan require_once.

När väl ovanstående grundinställning är på plats, kan Lucene-klassen användas i en kontrolleråtgärd (action), på följande sätt:

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

1. Använda tredjepartsbibliotek med namespace

För användning av bibliotek med namespace som följer PSR-0 (som Zend Framework 2 eller Symfony2), behöver dess rotkatalog registreras som sökvägsalias.

Som exempel använder vi Imagine. Om vi placerar katalogen Imagine under protected/vendors kommer vi att kunna använda det på följande sätt:

Yii::setPathOfAlias('Imagine',Yii::getPathOfAlias('application.vendors.Imagine'));
 
// Därefter standardkod från Imagine-guiden:
// $imagine = new Imagine\Gd\Imagine();
// etc.

I ovanstående exempel skall det alias vi definierar matcha bibliotekets första namespace-avsnitt.

2. Använda Yii med tredjepartsystem

Yii kan även användas som ett självständigt bibliotek för att stödja utveckling och förbättring av existerande tredjepartsystem, så som WordPress, Joomla, etc. För att åstadkomma detta, inkludera följande kod i tredjepartsystemets startskript:

require_once('path/to/yii.php');
Yii::createWebApplication('path/to/config.php');

Ovanstående kod är mycket lik kod som används i startskriptet för en typisk Yii-applikation, med undantag för en sak: metoden run() anropas inte när webapplikationens instans skapats.

Nu kan de flesta finesser som Yii erbjuder användas för vidareutveckling av tredjepartskod. Till exempel kan Yii::app() användas för att ge tillgång till applikationsinstansen; databasfinesser som DAO och ActiveRecord kan användas liksom modell och valideringsfinesser för att nämna några.

$Id: extension.integration.txt 3431 2011-11-03 00:53:44Z alexander.makarow@gmail.com $

Be the first person to leave a comment

Please to leave your comment.