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,这样就完成了自动加载