ฟังก์ชัน spl_autoload_register

ฟังก์ชัน spl_autoload_register ลงทะเบียนฟังก์ชันที่กำหนดให้เป็นวิธีการโหลดคลาสอัตโนมัติ เมื่อ PHP พบคลาสที่ยังไม่ได้กำหนด มันจะเรียกฟังก์ชันที่ลงทะเบียนไว้ทั้งหมดตามลำดับ โดยส่งชื่อคลาสไปให้ พารามิเตอร์แรกคือ callback-function สำหรับการโหลดอัตโนมัติ พารามิเตอร์ที่สอง (ไม่บังคับ) คือ ให้ throw exception เมื่อเกิดข้อผิดพลาดหรือไม่ พารามิเตอร์ที่สาม (ไม่บังคับ) คือ ให้เพิ่มฟังก์ชันไปที่จุดเริ่มต้นของคิวหรือไม่

ไวยากรณ์

phpspl_autoload_register(callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]);

ตัวอย่าง

การลงทะเบียนฟังก์ชันโหลดอัตโนมัติอย่างง่าย:

php<?php
  function my_autoloader($class) {
    include 'classes/' . $class . '.php';
  }
  
  spl_autoload_register('my_autoloader');
  
  // ตอนนี้สามารถสร้างออบเจ็กต์ได้โดยไม่ต้อง include อย่างชัดเจน
  $obj = new MyClass();
?>

ตัวอย่าง

การใช้ฟังก์ชัน anonymous สำหรับการโหลดอัตโนมัติ:

php<?php
  spl_autoload_register(function ($class) {
    include 'lib/' . str_replace('\\', '/', $class) . '.php';
  });
  
  $obj = new Some\Namespace\MyClass();
?>

ตัวอย่าง

การลงทะเบียนหลายฟังก์ชันโหลดอัตโนมัติ:

php<?php
  spl_autoload_register('autoloader1');
  spl_autoload_register('autoloader2');
  spl_autoload_register('autoloader3', true, true); // เพิ่มไปที่จุดเริ่มต้นของคิว
  
  // PHP จะเรียกฟังก์ชันตามลำดับ: autoloader3, autoloader1, autoloader2
  $obj = new MyClass();
?>

ดูเพิ่มเติม