PHP 5 引入 __autoload() 魔術函數,讓類別檔案在實例化時自動引入,避免冗長的 include 清單。現代開發建議使用 spl_autoload_register() 取代。
<?php
function __autoload($className) {
// 命名規範:類別名對應檔名,如 User -> User.php
require_once $className . '.php';
}
$obj = new MyClass1(); // 自動引入 MyClass1.php
$obj2 = new MyClass2(); // 自動引入 MyClass2.php
<?php
if (function_exists('spl_autoload_register')) {
spl_autoload_register(['core', 'autoload']);
} else {
function __autoload($class) {
return core::autoload($class);
}
}
class core {
public static function autoload($class) {
// 依據命名空間/前綴對應目錄
$file = ROOT_PATH . 'source/class/' . $class . '.php';
if (is_file($file)) include $file;
}
}
| 類別名 | 檔案路徑範例 |
|---|---|
| App\\Model\\User | /var/www/app/Model/User.php |
| User_Model | /var/www/models/User_Model.php |
| UserModel | /var/www/classes/UserModel.php |
__autoload() 專為「類別不存在」時觸發設計! 許多框架利用此機制實現類別檔案自動載入。PHP 7.2+ 已棄用 __autoload,PHP 8.0 移除,請全面改用 spl_autoload_register()。