im englischen Original von PHP-FIG PSR-0
Im Folgenden werden die verbindlichen Anforderungen, die für die Interoperabilität der Autoloader eingehalten werden müssen beschrieben.
\<Vendor Name>\(<Namespace>\)*<Class Name>
\Doctrine\Common\IsolatedClassLoader => /path/to/project/lib/vendor/Doctrine/Common/IsolatedClassLoader.php \Symfony\Core\Request => /path/to/project/lib/vendor/Symfony/Core/Request.php \Zend\Acl => /path/to/project/lib/vendor/Zend/Acl.php \Zend\Mail\Message => /path/to/project/lib/vendor/Zend/Mail/Message.php
\namespace\package\Class_Name => /path/to/project/lib/vendor/namespace/package/Class/Name.php \namespace\package_name\Class_Name => /path/to/project/lib/vendor/namespace/package_name/Class/Name.php
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.
Unten ist eine einfache Beispiel-Funktion, die aufzeigen soll, wie die oben vorgeschlagenen Standards automatisch geladen werden.
<?php function autoload($className) { $className = ltrim($className, '\\'); $fileName = ''; $namespace = ''; if ($lastNsPos = strrpos($className, '\\')) { $namespace = substr($className, 0, $lastNsPos); $className = substr($className, $lastNsPos + 1); $fileName = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR; } $fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php'; require $fileName; }
Die folgende GIST ist eine Beispielimplementierung, wie SplClassLoader Ihre Klassen laden können, wenn sie den oben vorgegebenen Standards folgen. Es ist der aktuell empfohlene Weg, um PHP-5.3 Klassen zu laden.