一般在框架中都会用到compor 工具, 用它来管理依赖。其中 compor 有类的自动加载机制,可以加载 compor 下载的库中的所有的类文件。那么 compor 的自动加载机制是怎么实现的呢?
以在 laravel 框架中为例:
```require __dir__.'/../vendor/autoload.php';```
```require_once __dir__ . '/compor/autoload_real.php';return comporautoloaderinit1215780529014c2b50a6fca7ce889273::getloader();```
```<?php// autoload_real.php @generated by comporclass comporautoloaderinit1215780529014c2b50a6fca7ce889273{ private static $loader; public static function lo汉弗莱爵士adclassloader($class) { if ('compor\autoload\classloader' === $class) { require __dir__ . '/classloader.php'; } } public static function getloader() { if (null !== lf::$loader) { return lf::$loader; } spl_autoload_register(array('comporautoloaderinit1215780529014c2b50a6fca7ce889273', 'loadclassloader'), true, true); lf::$loader = $loader = new \compor\autoload\classloader(); spl_autoload_unregister(array('comporautoloaderinit1215780529014c2b50a6fca7ce889273', 'loadclassloader')); $ustaticloader = php_version_id >= 50600 && !defined('hhvm_version') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); if ($ustaticloader) { require_once __dir__ . '/autoload_static.php'; call_ur_func(\compor\autoload\comporstaticinit1215780529014c2b50a6fca7ce889273::getinitializer($loader)); } el { $map = require __dir__ . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { $loader->t($namespace, $path); } $map = require __dir__ . '/autoload_psr4.php'; 重阳节话语发朋友圈短句 foreach ($map as $近视眼镜镜片namespace => $path) { $loader->tpsr4($namespace, $path); } $classmap = require __dir__ . '/autoload_classmap.php'; if ($classmap) { 杜甫代表作 $loader->addclassmap($classmap); } } $loader->register(true); if ($ustaticloader) { $includefiles = compor\autoload\comporstaticinit1215780529014c2b50a6fca7ce889273::$files; } el { $includefiles = require __dir__ . '/autoload_files.php'; } foreach ($includefiles as $fileidentifier => $file) { comporrequire1215780529014c2b50a6fca7ce889273($fileidentifier, $file); } return $loader; }}function comporrequire1215780529014c2b50a6fca7ce889273($fileiden穿越架空小说tifier, $file){ if (empty($globals['__compor_autoload_files'][$fileidentifier])) { require $file; $globals['__compor_autoload_files'][$fileidentifier] = true; }}```
可以看出这一段是 compor 自动加载的重点,首先在 autoload.php 中调用
comporautoloaderinit1215780529014c2b50a6fca7ce889273::getloader () 方法,getloader () 首先判断当前
本文发布于:2023-04-08 11:09:05,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/3363347cb1205a76c005082303404d40.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Composer 实现自动加载原理.doc
本文 PDF 下载地址:Composer 实现自动加载原理.pdf
留言与评论(共有 0 条评论) |