PHP Conference Japan 2024

spl_autoload_extensions

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

spl_autoload_extensions註冊並返回 spl_autoload 的預設檔案副檔名

說明

spl_autoload_extensions(?string $file_extensions = null): string

此函式可以修改和檢查內建的 __autoload() 後備函式 spl_autoload() 將使用的檔案副檔名。

注意事項定義的檔案副檔名之間不應有空格。

參數

file_extensions

如果是 null,它只會回傳目前的副檔名列表,每個副檔名以逗號分隔。要修改檔案副檔名列表,只需使用新的副檔名列表呼叫函式,將所有副檔名寫在一個字串中,每個副檔名以逗號分隔。

回傳值

spl_autoload() 的預設檔案副檔名,以逗號分隔的列表。

更新日誌

版本 說明
8.0.0 file_extensions 現在可以為 null。

範例

範例 #1 spl_autoload_extensions() 範例

<?php
spl_autoload_extensions
(".php,.inc");
?>
新增註釋

使用者貢獻的註釋 2 則註釋

dantedantas at gmail dot com
7 年前
副檔名的順序會影響回應速度。例如

spl_autoload_extensions(".php, .inc");



spl_autoload_extensions(".inc, .php");

更快。看看這個例子

一些類別檔案

ClassA.php
<?php class ClassA { var $val = 'Hello from class "ClassA"'; } ?>
ClassB.php
<?php class ClassB { var $val = 'Hello from class "ClassB"'; } ?>
ClassC.php
<?php class ClassC { var $val = 'Hello from class "ClassC"'; } ?>
ClassD.php
<?php class ClassD { var $val = 'Hello from class "ClassD"'; } ?>
ClassE.php
<?php class ClassE { var $val = 'Hello from class "ClassE"'; } ?>

1. 簡單
<?php
// 預設優先順序:.inc .php
for($n=65; $n<70; $n++) {
$className = 'Class'.chr($n);
spl_autoload($className);
$ins = new $className;
echo
$ins->val.'<br>';
}
// 4.2 毫秒
?>

2. 變更優先順序
<?php
spl_autoload_extensions
('.php,.inc');
// 新的優先順序:.php .inc
for($n=65; $n<70; $n++) {
$className = 'Class'.chr($n);
spl_autoload($className);
$ins = new $className;
echo
$ins->val.'<br>';
}
// 1.4 毫秒
?>
pim dot stoit at gmail dot com
8 年前
副檔名不一定要以點開頭,spl_autload() 會簡單地將您提供的任何內容附加到基本名稱。以下範例將會先嘗試載入 "test.php",然後也會載入 "test/index.php"

spl_autoload_register('.php,/index.php');
spl_autoload('Test');
To Top