laravel composer自动加载函数
来源:互联网 发布:慢跑 摇摆 知乎 编辑:程序博客网 时间:2024/05/16 17:32
laravel中有两个自动加载的函数,今天主要讲composer生成的基于PSR规范【推荐阅读:laravel之PSR规范】的自动加载函数,另一个是laravel框架核心别名的自动加载函数
从入口文件开始文件:laravel/public/index.php
<?phprequire __DIR__.'/../bootstrap/autoload.php';文件:laravel/bootstrap/autoload.php
<?phpdefine('LARAVEL_START', microtime(true));require __DIR__.'/../vendor/autoload.php';vendor/autoload.php是composer生成的自动加载函数
文件:laravel/vendor/autoload.php
<?phprequire_once __DIR__ . '/composer' . '/autoload_real.php';return ComposerAutoloaderInitb79a28d3e0a6ccef1b706e9ea3f04bb8::getLoader();文件:laravel/composer/autoload_real.php
<?phpclass ComposerAutoloaderInitb79a28d3e0a6ccef1b706e9ea3f04bb8{ private static $loader; public static function loadClassLoader($class) { if ('Composer\Autoload\ClassLoader' === $class) { require __DIR__ . '/ClassLoader.php'; } } public static function getLoader() { if (null !== self::$loader) { return self::$loader; } spl_autoload_register(array('ComposerAutoloaderInitb79a28d3e0a6ccef1b706e9ea3f04bb8', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); spl_autoload_unregister(array('ComposerAutoloaderInitb79a28d3e0a6ccef1b706e9ea3f04bb8', 'loadClassLoader')); $useStaticLoader = PHP_VERSION_ID >= 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
<?phpnamespace Composer\Autoload;class ClassLoader{ //省略代码 public function register($prepend = false) { spl_autoload_register(array($this, 'loadClass'), true, $prepend); } public function loadClass($class) { if ($file = $this->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
查看原文:
0 0
- laravel composer自动加载函数
- [李景山php]每天laravel[004]-自动加载函数流程之composer autoload_real.php
- 每天laravel[002]-自动加载函数流程
- Composer中的自动加载
- Composer中的自动加载
- Composer中的自动加载
- Composer自动加载功能
- Composer中的自动加载
- composer 自动加载原理
- Composer自动加载机制
- Composer自动加载实现
- php composer 在laravel中自动加载autoload_class.php中的配置
- 自动加载函数流程之composer autoload_real.php
- 自动加载函数流程之composer autoload_real.php
- laravel 用composer自动执行的命令
- Laravel 自动加载
- laravel自动加载
- composer概述及自动加载
- 搜索入门
- Google Assistant 将借力 CES 登陆 Android TV
- thinkphp 模板替换
- 关于斐波那契公约数
- 优化版冒泡排序之java实现
- laravel composer自动加载函数
- hdu-1878(欧拉回路)
- BZOJ 4760 dp
- 建树以及遍历
- 那些年不错的Android开源项目-个性化控件篇
- 四层负载均衡和七层负载均衡的区别
- iOS 图片旋转方法
- powerdesigner16.5 如何给生成的mysql脚本数据库中增加注释
- 10. kafka SimpleConsumer Consumer