• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

深入学习Composer原理四

php 搞代码 4年前 (2022-03-01) 16次浏览 已收录 0个评论
文章目录[隐藏]

本系列第四篇文章,也是最初一篇

首先,咱们先看看Composer的源码从哪里看起。当然,请您先筹备好源码。

composer init或者间接install之后,主动生成了一个vendor目录,这时您须要在文件中手动的require这个vendor目录下的autoload.php文件,其实这个文件又载入了vendor/composer/autoload\_real.php。

在autoload\_real.php中,咱们发现了相熟的spl\_autoload\_register函数。但这个文件最大的作用是去加载ClassLoader.php这个文件和一些目录文件,也在同级目录下。这个文件就值得大家好好钻研下了,不过外围也无外乎后面三篇文章中的内容。然而在autoload\_real.php中,大家能够发现在调用ClassLoader的register()函数前,还加载了几个目录相干的文件:

  • autoload\_static.php,动态加载形式,顶级类加载命名空间
  • autoload\_psr4.php,恪守PSR4标准的包目录映射数组文件
  • autoload\_namespaces.php,命名空间映射,PSR0标准
  • autoload\_classmap.php,类图映射,命名空间间接映射门路

好深奥的感觉,不过PSR4您肯定曾经很理解了。其余的其实就是对应的没有恪守PSR4标准的一些类库。而在ClassLoader中的register()函数就是加载的这些文件中对应的门路文件。在这里,最好的形式是您能够多下载一些包,而后看看这些文件产生了什么扭转。比方我装置了一个monolog后,autoload\_psr4.php的内容变成了这样:

接下来,composer这个命令干了什么您应该也就理解了。当您进行composer require时,首先批改了composer.json文件,而后下载包,实现后依据包里的composer.json文件中所对应的标准来批改对应的autoload\_xxx.php文件。实现了文件命名空间相干内容的映射。当register()进行加载的时候,天然就得心应手了。

ClassLoader源码中重点浏览的一些函数内容包含:

  • findFile()
  • findFileWithExtension()
  • addPsr4()
  • add()

相干参考文档:

深刻解析 composer 的主动加载原理

Composer概述及其主动加载探秘

Composer文档

PSR标准

至此,深刻学习Composer原理相干内容更新实现。其实还有更多能够学习的内容,比方装置时的install文件其实也是个php文件。composer命令也是个phar文件,也就是齐全PHP实现的,源码的Github地址:https://github.com/composer/composer。兴许在未来咱们能够再深刻的钻研钻研外围composer命令行相干的源码。到那时,再开一个系列文章再说,而这回,就先到这里吧!!

关注公众号:【硬核项目经理】获取最新文章

增加微信/QQ好友:【xiaoyuezigonggong/149844827】收费得PHP、项目管理学习材料

知乎、公众号、抖音、头条搜寻【硬核项目经理】

B站ID:482780532


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:深入学习Composer原理四

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址