を使用すると問題が発生しますが、これは断然最速の方法ですが、すべてのファイル名が小文字であることも想定しています。
spl_autoload_extensions(".php");
spl_autoload_register();
例えば:
SomeSuperClassクラスを含むファイルはsomesuperclass.phpという名前にする必要があります。Linuxのように大文字と小文字を区別するファイルシステムを使用する場合、これはファイルがSomeSuperClass.phpという名前でWindowsでの問題ではない場合の問題です。
コードで__autoloadを使用しても、PHPの現在のバージョンで動作する可能性がありますが、この機能は非推奨となり、将来的には削除される予定です。
したがって、残っているオプションは次のとおりです。
このバージョンはPHP 5.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;
});
AS
。これがこのソリューションが機能する理由ではありません。同じように簡単にできます:(use Person\Barnes\David\Class1;
これはと同じですuse Person\Barnes\David\Class1 as Class1;
)。