tutorials.de Buch-Aktion 05/2012
RSS-Feed anzeigen

Dem Dennis sein Blogdingen da...

Automatisches laden von Klassen

Bewerten
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:
PHP-Code:
require_once('classes/directorylist.class.php');
require_once(
'classes/multisql.class.php');
require_once(
'classes/sqlsession.class.php'); 
Dies hat meiner Meinung nach zwei entscheidende Nachteile:
  1. Speicherverschwendung:
    Wenn in einem Script mal nur eine der eingebundenen Klassen genutzt wird liegt der Code der anderen ungenutzt im Speicher.
  2. 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.
PHP-Code:
function __autoload($class)
{
    require_once(
'classes/'.strtolower($class).'.class.php'); 

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.

PHP4 bietet diese Funktion leider nicht, aber mit PHP4 ist es ja hoffentlich bald wirklich mal zu Ende...

"Automatisches laden von Klassen" bei Twitter speichern "Automatisches laden von Klassen" bei Facebook speichern

Kategorien
PHP

Kommentare

  1. Avatar von daddz
    Zu dem Thema wär wohl dieser Artikel erwähnenswert:
    http://www.sitepoint.com/blogs/2006/...ader-reloaded/