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