laravel第一课-基础知识-composer
本文视频地址#
或者在哔哩哔哩搜索,汪春波。
laravel 第一课 - 基础知识 - composer#
学习文章链接:xueyuanjun.com/post/4506
记录问题#
1、什么是组件#
组件是一组打包的代码,是一系列相关的类、接口和 Trait,用于帮助我们解决 PHP 应用中某个具体问题。例如第三方支付,第三方登陆组件。yansongda 支付。
2、Composer 是啥#
composer 就是一个包管理器。
Packagist 是查找 PHP 组件的社区,Composer 则是安装 PHP 组件的工具。Composer 是 PHP 的依赖管理器,运行在命令行中,你告诉 Composer 需要哪些组件,Composer 会下载并把这些组件自动加载到你的项目中,就这么简单
3、 composer 自动加载是如何实现的?(重要)#
Composer 创建的自动加载器其实就是个名为 autoload.php 的文件,保存在 vendor 目录中,Composer 下载各个 PHP 组件时,会检查每个组件的 composer.json 文件,确定如何加载该组件,得到这个信息后,Composer 会在本地为该组件创建一个符合 PSR 标准的自动加载器。这样我们就可以实例化项目中的任何 PHP 组件,这些组件按需自动加载。
那么底层代码是如何实现的呢?
4、 composer 底层是如何 autoload 的?(重点背下来)#
先看这个 Composer 实现自动加载原理 - 新手也能看懂
再看这里即可完全整明白了。深入学习 Composer 自动加载(autoload)机制
主要内容为:(背下来)
autoload.php 的 autoload_real.php 这里
流程为
- 首先在 autoload.php 中调用 ComposerAutoloaderInit1215780529014c2b50a6fca7ce889273::getLoader () 方法,2. getLoader () 首先判断当前𝑙𝑜𝑎𝑑𝑒𝑟是不是𝑛𝑢𝑙𝑙,如果不为𝑛𝑢𝑙𝑙就直接返回,否则就初始化一个𝐶𝑙𝑎𝑠𝑠𝐿𝑜𝑎𝑑𝑒𝑟类给赋值给 loader 是不是 null,如果不为 null 就直接返回,否则就初始化一个 ClassLoader 类给赋值给 loader
- 接着将 autoload_namespaces.php、autoload_psr4.php、autoload_classmap.php 文件中的内容加入到 $loader 中对应的数组中,然后给注册 loadClass 函数,将 autoload_files.php 中的所有路径所示的文件都包含进来
- 当在 new 一个类的时候如果没有找到相关的类就会触发这个 loadClass 函数
- 在 loadClass () 又调用了 findFile () 去查找相应的文件,找到相应文件后就会返回该文件,
- 然后 loadClass 调用 includeFile () 方法将该文件 include 进去,否则 findFile 返回 false,这样就完成了自动加载
推荐文章: