Sử dụng có một gotcha, mặc dù nó là phương pháp nhanh nhất cho đến nay, nó cũng yêu cầu tất cả các tên tệp của bạn là chữ thường.
spl_autoload_extensions(".php");
spl_autoload_register();
Ví dụ:
Một tệp chứa lớp SomeSuperClass sẽ cần được đặt tên là somesuperclass.php, đây là một lỗi khi sử dụng hệ thống tệp phân biệt chữ hoa chữ thường như Linux, nếu tệp của bạn có tên SomeSuperClass.php nhưng không phải là vấn đề trong Windows.
Sử dụng __autoload trong mã của bạn có thể vẫn hoạt động với các phiên bản PHP hiện tại nhưng hy vọng tính năng này sẽ không còn được dùng nữa và cuối cùng sẽ bị loại bỏ trong tương lai.
Vì vậy, những tùy chọn còn lại:
Phiên bản này sẽ hoạt động với PHP 5.3 trở lên và cho phép đặt tên tệp là SomeSuperClass.php và somesuperclass.php. Nếu bạn đang sử dụng 5.3.2 trở lên, trình tải tự động này sẽ hoạt động nhanh hơn.
<?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
. Đó không phải là lý do tại sao giải pháp này hoạt động. Bạn có thể dễ dàng làm như sau:use Person\Barnes\David\Class1;
(tương đương vớiuse Person\Barnes\David\Class1 as Class1;
).