spl_autoload_register的使用
spl_autoload_register() 作為 __autoload() 的替代函式
使用示例
// 定義一個檔案載入函式
function my_autoloader($class) {
// exit($class);
include 'classes/' . $class . '.class.php';
}
// 將檔案載入函式註冊到 spl_autoload_register() 中
spl_autoload_register('my_autoloader');
// 或者使用匿名函式將檔案載入函式註冊進spl_autoload_register() 中
/*
spl_autoload_register(function ($class) {
exit($class);
include 'classes/' . $class . '.class.php';
});
*/
// 通過呼叫類來出發自動載入
new \APP\Demo();
完整程式碼示例
<?php
//定義當前的目錄絕對路徑
define('DIR', dirname(__FILE__));
class Loading {
public static function autoload($className)
{
//根據PSR-O的第4點 把 \ 轉換層(目錄風格符) DIRECTORY_SEPARATOR ,
//便於相容Linux檔案找。Windows 下(/ 和 \)是通用的
//由於namspace 很規格,所以直接很快就能找到
$fileName = str_replace('\\', DIRECTORY_SEPARATOR, DIR .'\\'. $className).'.php';
if(is_file($fileName)){
require $fileName;
}else{
echo $fileName .' is not exist';die;
}
}
}
//採用`名稱空間`的方式註冊。php 5.3 加入的
//也必須是得是static靜態方法呼叫,然後就像載入namespace的方式呼叫,注意:不能使用use
spl_autoload_register("Loading::autoload");
//通過呼叫類則會自動觸發自動載入
new \APP\Demo();
本作品採用《CC 協議》,轉載必須註明作者和本文連結