这篇文章主要介绍作曲家加载方式是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
<强>作曲家的自动加载。强>
我们以Yii2为例,当我们通过作曲家生成了一个Yii2程序后,会在供应商下建立一个autoload.php文件,它负责帮我们自动加载供应商内的各种库(Yii2核心库也在供应商内,你懂得!)。
而你一定知道Yii2的入口文件索引。php有一行。
要求(__DIR__。& # 39;/. ./供应商/autoload.php& # 39;);
由此可见,Yii2对作曲家的友好程度,也难怪~孤木不成林,Yii2也要靠无数个作曲家扩展枝干才能变成参天大树。
下面开始正式讲解作曲家的自动装载,告诉你各式各样扩展安装后,我们并没有使用包括/要求,那么作曲家是如何帮我们找到他们的那?
<强>目前为止,作曲家一共支持4种自动加载方式强>
PSR-0 PSR-4 class-map 直接包含文件
这四种方式足以让作曲家涵盖地球上所有的PHP第三方扩展库。
PSR是一套PHP开发标准,现在大多数主流框架都在支持,工兵连已经开专题分享PSR干货。
<强> PSR-4 强>
PSR-4是作曲家推荐使用的一种方式,因为它更易使用并能带来更简洁的目录结构。在一个扩展的作曲家。json里是这样进行配置的:
{ “autoload": { “psr-4": { “Foo \ \“:“src/? } } }
键和值就定义出了名称空间以及其对应的目录映射。按照PSR-4的规则,当试图自动加载“Foo \酒吧\ Baz"类的使用,会去寻找“srcBarBaz.php"这个文件,如果它存在则加载,要注意的是此时“Foo \“并不会出现在文件路径中。
而composer.json这样的配置会被作曲家转换成名称空间与文件目录的地图形式,并存在供应商/作曲家/autoload_psr4.php文件中,所以如果你安装的某个扩展自动加载是PSR-4形式,你可以在autoload_psr4.php找到它的真实路径。
<强> PSR-0 强>
这是一个已经过时的标准,那是在遥远的PHP5.2时代,你我都知道,PHP5.3之后才有了类似名称空间这样的高级属性,所以PSR-0更多是考虑& lt;=5.2时代的扩展,于是乎PSR组织用了一个伪名称空间的做法。
有点蒙圈么?那我们来看代码你就明白了。
{ “autoload": { “psr-0": { “Foo \ \“:“src/? } } }
我们来分析这个扩展的加载方式,什么是伪名称空间那?当我们用这个库的时候
$模型=新Foo_Bar_Baz ();
对的,PSR-0的时代,有很多以下划线分隔的类名,它代表…它代表…
src/Foo/Bar/巴兹。php
聪明的你一定明白什么是伪名称空间了吧,通过命名的下划线来映射目录结构。
哎,那个时代的标准制定者们也真心不容易呀。
<强> Class-map方式强>
{ “autoload": { “classmap":(“src/?“lib/? } }
这个加载方式比较容易理解,当作曲家开始安装扩展的时候,会根据作曲家。json里的这个自动装载告诉的方式classmap,来遍历src,自由目录然后将里面的类文件和其路径一一对应,存放到供应商/作曲家/autoload_classmap.php内。
例如src/下有一个BaseController类,那么在autoload_classmap。php文件中,就会生成这样的配置:
& # 39;BaseController& # 39;=比;baseDir美元。& # 39;/src/BaseController.php& # 39;
若你还不懂,去看看autoload_classmap.php吧。
<强>文件方式强>
有了上面这些加载方式还不够么?是的,还会有一些供全局使用的比如帮助等这样函数,那么好吧,我们就讲这些文件直接包含进来好了。
{ “autoload": { “files":【“src/MyLibrary/functions.php"】 } }
作曲家安装扩展后会将其放到
供应商/作曲家/autoload_files。php
以上是“作曲家加载方式是什么”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!