Autoloading leicht gemacht Teil 2

Im letzten Blog habe ich Euch ja von den Problemen zwei verschiedener Entwicklungsumgebungen im Zusammenhang mit dem Autoloading unter PHP5 berichtet. Wie Sascha in seinem Blog berichtete, ist die Lösung mit der Prüfung, ob eine Datei in einer zu durchsuchenden Verzeichnisstruktur existiert, nicht unbedingt die performanteste. Bei einem Live Betrieb mit mehreren Hundert Benutzern und einer entsprechend stark verzweigten Verzeichnisstruktur, nimmt diese Art des Autoloadings natürlich enorm viel Zeit in Anspruch.

Aus diesem Grund habe ich die Autoloading Funktion nochmals vereinfacht. Allerdings setzt diese Funktion nun voraus, dass die Klassennamen den entsprechenden Pfad schon beinhalten. Eine Klasse mit dem Namen String, welche sich im Verzeichnis ./lib/util/ befindet, lautet nun also UtilString. Voraussetzung für diese Lösung ist auch die Camel Case Convention.

function __autoload($className)
{
        $className = str_replace('|', DIRECTORY_SEPARATOR, preg_replace('/(?!^)[[:upper:]]/','|\0',$className));
        require(ROOT_PATH . 'lib' . DIRECTORY_SEPERATOR . $className . '.class.php');
}
 
new UtilString();

Mit dieser Methode wird das Suchen in allen vorgegebenen Verzeichnissen unnötig. Man muss sich eben nur an eine gewisse Namensgebung bei den Klassen selbst halten. So haben wir mal eben eine Menge Zeit gespart.

About Author: Marcel
Ich bin Senior PHP Developer bei MM Newmedia. Seit 2005 bin ich begeisterter Webentwickler und arbeite als Freelancer für namenhafte Firmen und entwickle jede Menge abgefahrenes Zeug und berichte darüber in meinem Blog.

Kommentar verfassen