一、基础了解。
1、php引入文件使用include与require,这两个的区别在于,include可以在代码执行过程中再引入,而require是需要在代码执行前就进行引入操作。
2、命名空间。引入命名空间的作用是为了规避掉因为重名而引发的混乱与错误。可以把命名空间理解为一个箱子,不同的箱子都可以有苹果,但是A箱子的苹果与B箱子的苹果是不一样的。
psr-4对命名空间做了限定,\<顶级命名空间>(\<子命名空间>)*\类名。
3、autoload。接下来就是自动加载。升可以使用魔法函数__autoload进行自动加载,但是有一个限制,就是只能自动加载一次,这样对于需要多次进行加载是不友好的。
4、spl_autoload_register。这个函数的作用就是把传入的函数注册到spl_autoload_register函数队列,并移除系统默认的__autoload函数。
二、自动加载。
1、顶级命名空间路径映射。
//顶级命名空间以app为例
$vendorMap = [ 'app' => __DIR__. DIRECTORY_SEPARATOR.'app'];
2、解析文件路径
public static function find_path($class){
$vendor = substr($class,0,strpos($class,'\\'));
$vendorDIR = self::$vendorMap[$vendor];
$filePath = substr($class,strlen($vendor)).'.php';
return strtr($vendor.$vendorDIR,'\\',DIRECTORY_SEPARATOR);
}
3、引入文件
if(is_file($file)){
include $file;
}
4、使用spl_autoload_register注册自动化加载
写的简单,大体就是这样!困了,睡一会儿。