什么是自动加载自动加载是指在你想使用某个类,但你没有require 对应的.php文件的时候,程序帮你自动加载了php文件。(require是件很痛苦的事情OvO)在没有自动加载之前,你的代码可能是如下这样的:<?phprequire “app/Database.php”;require “app/Models/User.php”;require “config/app.php”;……$user = new Database();$user = new User();引入了好多的require,随着项目的不断迭代,会很乱。这样的设计并不好。php5.3之后,实现了自动加载,可以通过spl_autoload_register()方法进行php文件的的自动引入。spl_autoload_register()有三个参数。spl_autoload_register(‘autoload1’,true,true);第一个参数是当需要创建的类不存在时,调用autoload1()这个方法。第二个参数为true时,当类的自动加载函数无法成功注册时会抛出异常。第三个参数为true时,spl_autoload_register()方法会添加类的自动加载函数到队列之首,而不是队列尾部。因此,我们最后的代码会是这样:define(‘BASEDIR’, DIR);public static function autoload($class) { require BASEDIR . ‘/’ . str_replace(’\’, ‘/’, $class) . ‘.php’; }spl_autoload_register(‘autoload’);$operation = new IMooc\Operation(10);执行过程 首先定义了一个常量为BASEDIR为当前的目录(根目录),(1)当程序执行到$operation = new IMoocOperation(10);时,php引擎就会搜索作用域下是否有IMoocOperation这个类,如果有,则正常引入,如果没有则(2)调用spl_autoload_register()方法,然后再执行(3)autoload方法,autoload的参数$class为文件路径,根据psr-4规范,文件名要与类名相互对应,(也就是说,User.php文件只能有一个class,而且class名字必须是User),所以你在引入了php文件后,相当于引入了这个类,就可以调用相应的方法了。antuoload()在这个例子中被解析为public static function autoload($class) { require ‘imooc/IMooc/Operation.php’; }引入了这个类,自然就可以使用new Operation()对象。也就是说,只要你的代码符合psr-4规范,不需要require就可以自动加载相应的类。想象一下,你并不需要引入对应的类就可以直接使用,这很棒。如果本文对你有帮助,不妨点一个赞!