laravel composer自动加载函数


laravel中有两个自动加载的函数,今天主要讲composer生成的基于PSR规范【推荐阅读:laravel之PSR规范】的自动加载函数,另一个是laravel框架核心别名的自动加载函数
从入口文件开始

文件:laravel/public/index.php

 
  

文件:laravel/bootstrap/autoload.php

 
  

vendor/autoload.php是composer生成的自动加载函数

文件:laravel/vendor/autoload.php

 
  

文件:laravel/composer/autoload_real.php

= 50600 && !defined('HHVM_VERSION');
        if ($useStaticLoader) {
            require_once __DIR__ . '/autoload_static.php';

            call_user_func(\Composer\Autoload\ComposerStaticInitb79a28d3e0a6ccef1b706e9ea3f04bb8::getInitializer($loader));
        } else {
            $map = require __DIR__ . '/autoload_namespaces.php';
            foreach ($map as $namespace => $path) {
                $loader->set($namespace, $path);
            }

            $map = require __DIR__ . '/autoload_psr4.php';
            foreach ($map as $namespace => $path) {
                $loader->setPsr4($namespace, $path);
            }

            $classMap = require __DIR__ . '/autoload_classmap.php';
            if ($classMap) {
                $loader->addClassMap($classMap);
            }
        }

        $loader->register(true);

        if ($useStaticLoader) {
            $includeFiles = Composer\Autoload\ComposerStaticInitb79a28d3e0a6ccef1b706e9ea3f04bb8::$files;
        } else {
            $includeFiles = require __DIR__ . '/autoload_files.php';
        }
        foreach ($includeFiles as $fileIdentifier => $file) {
            composerRequireb79a28d3e0a6ccef1b706e9ea3f04bb8($fileIdentifier, $file);
        }

        return $loader;
    }
}
////省略代码

文件:laravel/composer/ClassLoader.php

findFile($class)) {
            includeFile($file);

            return true;
        }
    }
    //省略代码

}

composer自动加载过程

文件vendor/autoload.php加载文件autoload_real.php并且调用getLoader方法
getLoader方法里面实例化\Composer\Autoload\ClassLoader();composer/ClassLoader.php类,这里类的路径不一样主要是跟ClassLoader.php 空间命名namespace有关,
然后调用了$loader->register(true);即调用了ClassLoader.php的文件中的register方法,使用spl_autoload_register【推荐阅读:php spl autoLoad机制】开始加载,然后include文件


QQ交流群:136351212
查看原文:

你可能感兴趣的:(laravel composer自动加载函数)