Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
dev:all:psr-0de [12.08.2014 10:44] – [Beispiel Implementation] 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 Namensraum und Klassenname muss die folgende Struktur haben: '' | ||
- | * Jeder Namensraum muss einen Top-Level Namensraum (" | ||
- | * Jeder Namensraum kann beliebig viele Unter-Namensräume definieren. | ||
- | * Jeder Namensraum-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 Namensraumes, | ||
- | * Der voll qualifizierte Namensraum 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 Namensräumen 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:// | ||
- | |||
- | --- // | ||
- | |||
- | |||