ฟังก์ชัน spl_autoload_register
ฟังก์ชัน spl_autoload_register ลงทะเบียนฟังก์ชันที่กำหนดให้เป็นวิธีการโหลดคลาสอัตโนมัติ เมื่อ PHP พบคลาสที่ยังไม่ได้กำหนด มันจะเรียกฟังก์ชันที่ลงทะเบียนไว้ทั้งหมดตามลำดับ โดยส่งชื่อคลาสไปให้ พารามิเตอร์แรกคือ callback-function สำหรับการโหลดอัตโนมัติ พารามิเตอร์ที่สอง (ไม่บังคับ) คือ ให้ throw exception เมื่อเกิดข้อผิดพลาดหรือไม่ พารามิเตอร์ที่สาม (ไม่บังคับ) คือ ให้เพิ่มฟังก์ชันไปที่จุดเริ่มต้นของคิวหรือไม่
ไวยากรณ์
spl_autoload_register(callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]);
ตัวอย่าง
การลงทะเบียนฟังก์ชันโหลดอัตโนมัติอย่างง่าย:
<?php
function my_autoloader($class) {
include 'classes/' . $class . '.php';
}
spl_autoload_register('my_autoloader');
// ตอนนี้สามารถสร้างออบเจ็กต์ได้โดยไม่ต้อง include อย่างชัดเจน
$obj = new MyClass();
?>
ตัวอย่าง
การใช้ฟังก์ชัน anonymous สำหรับการโหลดอัตโนมัติ:
<?php
spl_autoload_register(function ($class) {
include 'lib/' . str_replace('\\', '/', $class) . '.php';
});
$obj = new Some\Namespace\MyClass();
?>
ตัวอย่าง
การลงทะเบียนหลายฟังก์ชันโหลดอัตโนมัติ:
<?php
spl_autoload_register('autoloader1');
spl_autoload_register('autoloader2');
spl_autoload_register('autoloader3', true, true); // เพิ่มไปที่จุดเริ่มต้นของคิว
// PHP จะเรียกฟังก์ชันตามลำดับ: autoloader3, autoloader1, autoloader2
$obj = new MyClass();
?>
ดูเพิ่มเติม
-
ฟังก์ชัน spl_autoload_functions,
ซึ่งคืนค่า autoloaders -
ฟังก์ชัน spl_autoload_unregister,
ซึ่งลบ autoloader -
ฟังก์ชัน class_exists,
ซึ่งตรวจสอบคลาส