- spl_autoload_register: documentation ( source)
- array_merge: documentation ( source)
- array_change_key_case: documentation ( source)
- strtolower: documentation ( source)
<?php
/**
* Lädt Klassendefinitionen anhand eines Classmaparrays.
* Der Arrayschlüssel entspricht dem Klassennamen und der Arraywert dem Pfad zur Klassendatei.
* Alle Arrayschlüssel werden in Kleinbuchstaben gewandelt, um Fehler durch Groß- Kleinschreibung zu vermeiden.
* @package Classloader
*/
class ClassmapAutoloader
{
/**
* Classmap: array("Klassenname" => "Pfad zur Datei mit Klassendefinition").
* @var array
*/
protected $classmap;
/**
* Registriert die Funktion "loadClass" als Autoload-Funktion.
* @param array Classmap.
*/
public function __construct(array $classmap = array())
{
$this->classmap = array_change_key_case($classmap);
spl_autoload_register('self::loadClass');
}
/**
* Fügt ein Array zur Classmap hinzu.
* @param array Classmap.
*/
public function addClassmap(array $classmap)
{
$this->classmap = array_merge($this->classmap, array_change_key_case($classmap));
}
/**
* Includet die Datei, die die Klassendefinition enthält.
* @param string Name der Klasse, die geladen werden soll.
*/
protected function loadClass($class_name)
{
$class_name = strtolower($class_name);
if(isset($this->classmap[$class_name]))
include $this->classmap[$class_name];
}
}
?>