การใช้ gotcha ในขณะที่เป็นวิธีที่เร็วที่สุด แต่ก็คาดหวังว่าชื่อไฟล์ทั้งหมดของคุณจะเป็นตัวพิมพ์เล็ก
spl_autoload_extensions(".php");
spl_autoload_register();
ตัวอย่างเช่น:
ไฟล์ที่มีคลาส SomeSuperClass จะต้องมีชื่อว่า somesuperclass.php ซึ่งเป็น gotcha เมื่อใช้ระบบไฟล์ที่มีความสำคัญกับตัวพิมพ์เล็กและใหญ่เช่น 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;
)