spl_autoload_extensions()
(PHP 5 >= 5.1.0, PHP 7)
注册并返回spl_autoload函数使用的默认文件扩展名。
说明
spl_autoload_extensions([string $file_extensions]): string
本函数用来修改和检查__autoload()函数内置的默认实现函数spl_autoload()所使用的扩展名。
参数
- $file_extensions
当不使用任何参数调用此函数时,它返回当前的文件扩展名的列表,不同的扩展名用逗号分隔。要修改文件扩展名列表,用一个逗号分隔的新的扩展名列表字符串来调用本函数即可。中文注:默认的spl_autoload函数使用的扩展名是".inc,.php"。
返回值
逗号分隔的spl_autoload()函数的默认文件扩展名。
The order of the extensions influence the velocity of the reply. For example: spl_autoload_extensions(".php, .inc"); is more fast than: spl_autoload_extensions(".inc, .php"); Check out this example: Some class files: 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. Simple: <?php // default priority: .inc .php for($n=65; $n<70; $n++) { $className = 'Class'.chr($n); spl_autoload($className); $ins = new $className; echo $ins->val.'<br>'; } // 4.2 miliseconds ?> 2. Change priority: <?php spl_autoload_extensions('.php,.inc'); // new priority: .php .inc for($n=65; $n<70; $n++) { $className = 'Class'.chr($n); spl_autoload($className); $ins = new $className; echo $ins->val.'<br>'; } // 1.4 miliseconds ?>
Extensions doesn't have to start with a dot, spl_autload() will simply append whatever you supply to the basename. The following example will try to load "test.php" first, and "test/index.php" as well: spl_autoload_register('.php,/index.php'); spl_autoload('Test');