มันเกี่ยวข้องกับวิธีการบังคับให้คลาสและเนมสเปซควรตรงกับไดเรคทอรีและไฟล์ในระบบไฟล์
ช่วยให้นักพัฒนาสามารถมั่นใจได้ว่าสามารถโหลดคลาสได้อย่างง่ายดาย ถูกต้องและอัตโนมัติในระหว่างการเรียกใช้โปรแกรมผ่าน autoloader กับ PSR-4.
spl_autoload_register(function ($class) {
// ฐานของ project (เช่น "src")
$baseDir = __DIR__ . '/src/';
// เนมสเปซของโปรเจ็ก (เช่น "MyProject")
$prefix = 'MyProject\\';
// ตรวจสอบว่าคลาสที่กำลังโหลดเริ่มต้นด้วย prefix หรือไม่
$len = strlen($prefix);
if (strncmp($prefix, $class, $len) !== 0) {
return;
}
// หาชื่อคลาสโดยที่นำ prefix ออก
$relativeClass = substr($class, $len);
// แทนที่ namespace separator ด้วย directory separator และเติม .php
$file = $baseDir . str_replace('\\', '/', $relativeClass) . '.php';
// ถ้าไฟล์อยู่จริง, ก็โหลดขึ้นมา
if (file_exists($file)) {
require $file;
}
});