Automatisches laden von Klassen
von Dennis Wronka
am 12.07.08 um 08:07 (653 Hits)
Ich hab schon zuvor drueber gelesen, aber es bis vorhin noch nicht getestet: Automatisches laden von Klassen.
Jeder der ein Projekt mit mehreren Klassen aufzieht kennt sicher Konstrukte wie diesen noch recht kurzen Auszug:
Dies hat meiner Meinung nach zwei entscheidende Nachteile:PHP-Code:require_once('classes/directorylist.class.php');
require_once('classes/multisql.class.php');
require_once('classes/sqlsession.class.php');
- Speicherverschwendung:
Wenn in einem Script mal nur eine der eingebundenen Klassen genutzt wird liegt der Code der anderen ungenutzt im Speicher.- Unflexibel:
Wenn eine Klasse zum Projekt hinzugefuegt wird muss diese auch dieser Liste hinzugefuegt werden. Vergisst man dies gibt es Probleme.
Mit Auto-Loading bietet PHP5 eine einfache Technik um beide Probleme zu beseitigen. Es wird nur der Code geladen der auch gebraucht wird, und es wird immer probiert Code zu laden wenn eine unbekannte Klasse instanziiert werden soll.
Wenn man, wie ich, die Dateinamen am Klassennamen orientiert (z.B. DirectoryList -> directorylist.class.php) ist es ganz einfach mit der Funktion __autoload() Klassen zu laden.
Dadurch wird nur Code geladen der auch gebraucht wird, und nicht der Code aller Klassen (genutzter und ungenutzter) im Speicher abgelegt. Zusaetzlich ist es kinderlich eine neue Klasse zum Projekt hinzuzufuegen, denn man kopiert sie lediglich in das entsprechende Verzeichnis und startet mit der Nutzung.PHP-Code:function __autoload($class)
{
require_once('classes/'.strtolower($class).'.class.php');
}
PHP4 bietet diese Funktion leider nicht, aber mit PHP4 ist es ja hoffentlich bald wirklich mal zu Ende...






