PHP自动加载功能的由来
在PHP开发过程中,如果希望从外部引入一个 class,通常会使用 include 和 require 方法,去把定义这个 class 的文件包含进来。这个在小规模开发的时候,没什么大问题。但在大型的开发项目中,使用这种方式会带来一些隐含的问题:如果一个 PHP 文件需要使用很多其它类,那么就需要很多的 require/include 语句,这样有可能会造成遗漏或者包含进不必要的类文件。如果大量的文件都需要使用其它的类,那么要保证每个文件都包含正确的类文件肯定是一个噩梦, 况且 require_once 的代价很大。

<?php
use App\loging; //1:使用use加载命名空间app下的loging.php 但是use并不会帮你引入该类
spl_autoload_register(function ($class_name) {
    print __DIR__.'/'.$class_name.".php"; //php文件路径
    require_once __DIR__.'/'.$class_name.".php";//3:引入该php文件 $class_name自动获取被调用类的名称
});

loging::demo();//2:调用loging类的demo方法 因为该类并未引入 将会执行spl_autoload_register函数的方法

?>

图解:
QQ截图20191119204548.png

Last modification:December 16th, 2019 at 05:04 pm
如果觉得我的文章对你有用,请随意赞赏