0 follower

Andere Bibliotheken verwenden

Um Yii’s Funktionalität leicht durch Bibliotheken von Drittanbietern erweitern zu können, wurde bei der Planung viel Sorgfalt auf diesen Punkt verwendet. Bei der Verwendung von solchen Bibliotheken ist der Entwickler oft mit Problemen im Zusammenhang mit Klassenbezeichnungen und Dateieinbindungen konfrontiert. Da allen Yii-Klassen der Buchstabe C vorangestellt wurde, sind Konflikte bei Klassennamen eher unwahrscheinlich. Und da Yii beim Einbinden von Klassen auf SPL autoload setzt, klappt das Zusammenspiel mit Bibliotheken reibungslos, wenn diese für ihre Klassen die selbe Methode zum automatischen Laden oder den selben 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 entpacken wir die Dateien des Zend-Framework in ein Verzeichnis unterhalb von protected/vendors, unter der Annahme, dass protected das Stammverzeichnis unserer Anwendung ist. Ü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, können wir die Klasse Lucene in einer Controller-Action wir folgt verwenden:

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