L'uso ha un trucco, sebbene sia di gran lunga il metodo più veloce, si aspetta anche che tutti i nomi dei file siano minuscoli.
spl_autoload_extensions(".php");
spl_autoload_register();
Per esempio:
Un file contenente la classe SomeSuperClass dovrebbe essere chiamato somesuperclass.php, questo è un trucco quando si usa un filesystem case sensitive come Linux, se il tuo file si chiama SomeSuperClass.php ma non è un problema sotto Windows.
L'uso di __autoload nel codice può ancora funzionare con le versioni correnti di PHP, ma si prevede che questa funzione diventi deprecata e infine rimossa in futuro.
Quindi quali opzioni sono rimaste:
Questa versione funziona con PHP 5.3 e versioni successive e consente nomi di file SomeSuperClass.php e somesuperclass.php. Se utilizzi 5.3.2 e versioni successive, questo caricatore automatico funzionerà ancora più velocemente.
<?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
. Non è per questo che questa soluzione funziona. Potresti altrettanto facilmente fare:use Person\Barnes\David\Class1;
(che è equivalente ause Person\Barnes\David\Class1 as Class1;
).