Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |||
dev:all:psr-0de [13.08.2014 16:34] – [Unterstriche in Namensräumen and Klassennamen] Manuela v.d.Decken | dev:all:psr-0de [13.08.2014 23:21] (aktuell) – gelöscht Manuela v.d.Decken | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | [size=10]im englischen Original von [[http:// | ||
- | ====== Autoloading Standard ====== | ||
- | |||
- | Im Folgenden werden die verbindlichen Anforderungen, | ||
- | |||
- | ===== Verbindliches ===== | ||
- | |||
- | * Ein voll qualifizierter Namespace und Klassenname muss die folgende Struktur haben: '' | ||
- | * Jeder Namespace muss einen Top-Level Namespace (" | ||
- | * Jeder Namespace kann beliebig viele Unter-Namespaces definieren. | ||
- | * Jeder Namespace-Trenner wird beim Laden vom Dateisystem in einen DIRECTORY_SEPARATOR konvertiert. | ||
- | * Jeder **_** im Klassennamen wird zu einem DIRECTORY_SEPARATOR konvertiert. :!: //Anpassung für WB:// Der **_** hat keine spezielle Bedeutung in der __normalen__ Definition eines Namespace, bei Pseudo-Namespaces (siehe [[dev: | ||
- | * Der voll qualifizierte Namespace und Klassennamen wird beim Zugriff auf das Dateisystem um die Endung **.php** ergänzt. | ||
- | * Alphabetische Zeichen (A-Z) in Vendornamen, | ||
- | |||
- | ===== Beispiele ===== | ||
- | |||
- | \Doctrine\Common\IsolatedClassLoader => / | ||
- | \Symfony\Core\Request | ||
- | \Zend\Acl | ||
- | \Zend\Mail\Message | ||
- | |||
- | ===== Unterstriche in Namespaces and Klassennamen ===== | ||
- | |||
- | \namespace\package\Class_Name | ||
- | \namespace\package_name\Class_Name => / | ||
- | |||
- | Die Standards die wir hier setzen sollten der kleinste gemeinsame Nenner zum problemlosen Zusammenspiel der Autoloader sein. Mit der Beispielimplementation des SplClassLoader können Sie testen, ob ihre Implementation den Standards entspricht. | ||
- | |||
- | ===== Beispiel Implementation ===== | ||
- | |||
- | Unten ist eine einfache Beispiel-Funktion, | ||
- | vorgeschlagenen Standards automatisch geladen werden. | ||
- | |||
- | <file php ExampleAutoloader.php> | ||
- | <?php | ||
- | |||
- | function autoload($className) | ||
- | { | ||
- | $className = ltrim($className, | ||
- | $fileName | ||
- | $namespace = ''; | ||
- | if ($lastNsPos = strrpos($className, | ||
- | $namespace = substr($className, | ||
- | $className = substr($className, | ||
- | $fileName | ||
- | } | ||
- | $fileName .= str_replace(' | ||
- | |||
- | require $fileName; | ||
- | } | ||
- | |||
- | </ | ||
- | |||
- | ===== SplClassLoader Implementation ===== | ||
- | |||
- | Die folgende GIST ist eine Beispielimplementierung, | ||
- | |||
- | [[http:// | ||
- | |||
- | --- // | ||
- | |||
- | |||