Magento und das doppelte Zend – Lottchen
Magento basiert auf dem Open-Source Framework Zend. Ein Framework ist eine Ansammlung von vielen Objektklassen, die mehr oder weniger miteinander verknüpft sind. Die Zend-Library von Magento liegt von der Dokument-Root Ebene aus gesehen in dem Unterverzeichnis /lib.
Mit dem Trick des Setzens des Include_Path für PHP kann man die Zend-Library und damit die Zend-Objekte bequem nutzen. Das geschieht mit der PHP Funktion set_include_path(‘..’). Mit dem anschließenden Aufruf des Zend Loaders werden die benötigten Zend Libraries bereitgestellt.
Ein kleines Beispiel, nennen wir es test.php auf der Dokument-Root-Ebene:
<?php
set_include_path(
realpath(dirname(__FILE__)) . ‘/lib/’
. PATH_SEPARATOR . get_include_path()
);
require_once “Zend/Loader.php”;
Zend_Loader::registerAutoload();
// Prüfen des Datums
$date = ’01.03.2000′;
if (Zend_Date::isDate($date)) {
print “Zeichenkette $date ist ein Datum”;
} else {
print “Zeichenkette $date ist KEIN Datum”;
}
echo(‘<br/>’);
// Prüfen eines lokalisierten Datums
$date = ’01 February 2000′;
if (Zend_Date::isDate($date,’dd MMMM yyyy’, ‘en’)) {
print “Zeichenkette $date ist ein Datum”;
} else {
print “Zeichenkette $date ist KEIN Datum”;
}
echo(‘<br/>’);
// Prüfen eines unmöglichen Datums
$date = ’30 February 2000′;
if (Zend_Date::isDate($date,’dd MMMM yyyy’, ‘en’)) {
print “Zeichenkette $date ist ein Datum”;
} else {
print “Zeichenkette $date ist KEIN Datum”;
}
?>
Das Ergebnis dieses kleinen Skripts sieht dann so aus:
Die eigenen Skripte können dann an beliebiger Stelle in den Template-Dateien über require_once .. eingebunden werden. Somit werden auf bequeme Art und Weise die vorhandenen Zend-Bibliotheken genutzt. Allerdings gibt es noch ein Problem… Von Zeit zu Zeit werden Updates von Varien eingeschoben oder neue Releases veröffentlicht. Damit geht auch eine Erneuerung der Zend-Library einher. Das bedeutet aber, dass man sich nie sicher sein kann, ob die von einem selbst vorher mühselig programmierten Skripte auch nach dem Update noch funktionieren. ( . Auch die Frage, welche Zend-Version wird denn jetzt gerade von Magento genutzt, können die wenigsten auf Anhieb beantworten. Um die Klassen aber effektiv nutzen zu können, muß ich wissen, welche Version eingesetzt wird. Deswegen schlage ich eine doppelte Anlage der Zend-Library vor. Das hat den Vorteil, dass man immer Herr über die von einem selbst genutzten Library ist. Und man kann selbst festlegen, welche Version genutzt werden soll.
Letzte Kommentare