Использование имеет подводный камень, хотя это, безусловно, самый быстрый метод, он также ожидает, что все ваши имена файлов будут в нижнем регистре.
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;
).