Bei der Planung von Yii wurde sorgfältig darauf geachtet, dass andere
Bibliotheken leicht mit eingebunden werden können, um den Funktionsumfang zu
erweitern. Oft passiert es nämlich, dass es zu Namenskonflikten oder Problemen
mit Includes kommt, wenn man Fremdbibliotheken in einem Projekt verwenden
möchte. Yii's Klassen beginnnen daher alle mit dem Buchstaben C
um solche
Namenskonflikte zu vermeiden. Außerdem verwendet Yii das SPL
autoload Feature von
PHP. Damit klappt das Zusammenspiel mit Bibliotheken reibungslos, auch wenn diese
selbe Methode zum automatischen Laden ihrer Klassen verwenden oder den PHP
Include-Pfad verwenden.
Unten zeigen wir an einem Beispiel, wie man die Zend_Search_Lucene-Komponente aus dem Zend-Framework in einer Yii-Anwendung verwendet.
Zunächst werden die Dateien des Zend-Frameworks in ein Verzeichnis
unterhalb von protected/vendors
entpackt, wobei protected
für das
Anwendungsverzeichnis
steht. Überprüfen Sie, dass die Datei protected/vendors/Zend/Search/Lucene.php
vorhanden ist.
Fügen Sie dann die folgenden beiden Zeilen am Anfang einer Controllerklasse ein:
Yii::import('application.vendors.*');
require_once('Zend/Search/Lucene.php');
Der obige Code bindet die Klassendatei Lucene.php
ein. Da wir einen
relativen Pfad verwenden, müssen wir den Include-Pfad von PHP verändern, damit
die Datei gefunden werden kann. Dies erfolgt über den Aufruf von Yii::import
vor require_once
.
Nachdem obige Änderungen vorgenommen wurden, kann man die Klasse Lucene
in
einer Controlleraction wie folgt verwenden:
$lucene=new Zend_Search_Lucene($pathOfIndex);
$hits=$lucene->find(strtolower($keyword));
Damit man Bibliotheken mit Namespaces gemäß PSR-0 (etwa Zend Framework 2 oder Symfony2) verwenden kann, muss man einen Pfad-Alias für deren Stammverzeichnis definieren.
Wir zeigen das hier am Beispiel von Imagine.
Wenn das Imagine
-Verzeichnis unter protected/vendors
liegt, können wir die
Bibliothek wie folgt verwenden:
Yii::setPathOfAlias('Imagine',Yii::getPathOfAlias('application.vendors.Imagine'));
// Hier dann Code wie aus dem Imagine-Guide:
// $imagine = new Imagine\Gd\Imagine();
// etc.
Der definierte Alias sollte also dem ersten Teil des Namespaces der Bibliothek entsprechen.
Man kann Yii kann auch als eigenständige Bibliothek verwenden, die einen bei der Entwicklung und Verbesserung von Drittsystemen wie WordPress oder Joomla unterstützt. Dazu wird folgender Ladecode in das Drittsystem eingebunden:
require_once('path/to/yii.php');
Yii::createWebApplication('path/to/config.php');
Das ist fast der selbe Code, wie ihn auch eine typische Yii-Anwendung
verwendet. Allerdings mit dem Unterschied, dass hier nicht die Methode
run()
auf dem erstellten Anwendungsobjekt aufgerufen wird.
Ab nun kann man die meisten Yii-Features auch im Fremdsystem verwenden. Über
Yii::app()
lässt sich zum Beispiel auf die Anwendungsinstanz zugreifen. Auch
Datenbankfeatures wie DAO und ActiveRecord stehen zur Verfügung. Ebenso Models
und deren Validierungsfeature und vieles mehr.
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.