Die Verwendung von gotcha ist zwar bei weitem die schnellste Methode, es wird jedoch auch erwartet, dass alle Dateinamen in Kleinbuchstaben geschrieben werden.
spl_autoload_extensions(".php");
spl_autoload_register();
Beispielsweise:
Eine Datei, die die Klasse SomeSuperClass enthält, muss somesuperclass.php heißen. Dies ist ein Problem, wenn Sie ein Dateisystem mit Groß- und Kleinschreibung wie Linux verwenden, wenn Ihre Datei SomeSuperClass.php heißt, aber unter Windows kein Problem darstellt.
Die Verwendung von __autoload in Ihrem Code funktioniert möglicherweise weiterhin mit aktuellen PHP-Versionen. Erwarten Sie jedoch, dass diese Funktion in Zukunft veraltet und endgültig entfernt wird.
Also, welche Optionen bleiben übrig:
Diese Version funktioniert mit PHP 5.3 und höher und ermöglicht die Dateinamen SomeSuperClass.php und somesuperclass.php. Wenn Sie 5.3.2 und höher verwenden, arbeitet dieser Autoloader noch schneller.
<?php
if ( function_exists ( 'stream_resolve_include_path' ) == false ) {
function stream_resolve_include_path ( $filename ) {
$paths = explode ( PATH_SEPARATOR, get_include_path () );
foreach ( $paths as $path ) {
$path = realpath ( $path . PATH_SEPARATOR . $filename );
if ( $path ) {
return $path;
}
}
return false;
}
}
spl_autoload_register ( function ( $className, $fileExtensions = null ) {
$className = str_replace ( '_', '/', $className );
$className = str_replace ( '\\', '/', $className );
$file = stream_resolve_include_path ( $className . '.php' );
if ( $file === false ) {
$file = stream_resolve_include_path ( strtolower ( $className . '.php' ) );
}
if ( $file !== false ) {
include $file;
return true;
}
return false;
});
AS
. Deshalb funktioniert diese Lösung nicht. Sie könnten genauso gut tun:use Person\Barnes\David\Class1;
(was gleichbedeutend ist mituse Person\Barnes\David\Class1 as Class1;
).