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));
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.
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.
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.