关于__autoload 和spl_autoload_register的区别就不多说,网上已经有好多的帖子了。就说说自己调用实验的结果吧。
这个是autoload.php的代码
<php
//自动加载测试 function hello($classname){ echo "hello\n"; require_once "A.php"; } function helloworld($classname){ echo "hello world\n"; exit; } class hello{ public static function world($classname){ // if($classname == "C"){ echo "class hello world\n"; return; // } } } spl_autoload_register("hello"); spl_autoload_register("helloworld"); spl_autoload_register(["hello","world"],false,false); new A();
下面是A.php的代码
<?php /** * Created by PhpStorm. * User: hzwhjf * Date: 2017/8/8 * Time: 15:25 */ class A { public function __construct() { echo "I'am Class_A\n"; } }
最后调用结果是:
也就是说:在PHP中的自动加载函数队列中的其中一个能找到相关的类,后面的函数就不会继续执行。
个人理解是:如果要优化执行效率,要把使用频率最高的自动加载函数放在最前面比较好。