php 自动加载机制

一、基础了解。

    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注册自动化加载

写的简单,大体就是这样!困了,睡一会儿。

你可能感兴趣的:(php,php)