使用には落とし穴があります。これははるかに高速な方法ですが、すべてのファイル名が小文字である必要もあります。
spl_autoload_extensions(".php");
spl_autoload_register();
例えば:
クラスSomeSuperClassを含むファイルにはsomesuperclass.phpという名前を付ける必要があります。これは、ファイルの名前がSomeSuperClass.phpであるが、Windowsでは問題がない場合、Linuxなどの大文字と小文字を区別するファイルシステムを使用する場合の落とし穴です。
コードで__autoloadを使用しても、現在のバージョンのPHPで機能する可能性がありますが、この機能は非推奨になり、将来的には削除される予定です。
では、どのようなオプションが残っているのでしょうか。
このバージョンはPHP5.3以降で動作し、ファイル名SomeSuperClass.phpおよびsomesuperclass.phpを使用できます。5.3.2以降を使用している場合、このオートローダーはさらに高速に動作します。
<?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;
});