PHP包管理器Composer与自动加载规范

composer学习地址:http://docs.phpcomposer.com/0

composer.json中的自动加载映射
目前PSR-0自动加载、PSR-4自动加载、classmap生成和files引入都是被支持的,PSR-4是首推的方法,因为它提供了更大的易用性。

PSR-4
PSR-4规范了如何指定文件路径从而自动加载类,同时规范了自动加载文件的位置。乍一看这是和PSR-0重复了,实际上,在功能上确实有一部分重复。区别在于,PSR-4的规范比较干净,去除了兼容PHP5.3以前版本的内容。
PSR-4和PSR-0最大的区别是对下划线的定义不同,PSR-4中,在类名中使用下划线是没有特殊含义的,而在PSR-0的规则中,下划线或被转化为目录分隔符

在PSR-4的键下,你可以定义命名空间和路径的映射关系,当自动加载类如Foo\Bar\Baz时,命名空间Foo指向一个名为src/的目录意味着自动加载器将查找名为src/Bar/Baz.php文件并引用它。

命名空间的前缀必须以\结尾,以避免类似前缀之间的冲突。在安装和更新期间,PSR-4引用全部组合到一个key=>value数组中,该数组可以在生成的文件vendor/composer/autoload_psr4.php中找到。

例子:

1
2
3
4
5
6
7
{
"autoload": {
"psr-4": {
"App\\": "App/" // 命名空间App映射到目录App
}
}
}

classmap
classmap引用的所有组合,都会在安装、更新的过程中生成并存储到vendor/composer/autoload_classmap.php文件中。
你可以使用classmap生成支持自定义加载的不遵循PSR-4规范的类库,要配置它指向的目录,以便能够准确的搜索到类文件

例子:

1
2
3
4
5
{
"autoload": {
"classmap": ["src/", "lib/", "Something.php"]
}
}

Files
如果你想要明确指定,在每次请求时都要载入某些文件,那么你可以使用files字段加载。通常作为函数库的载入方式。

例子:

1
2
3
4
5
{
"autoload": {
"files": ["src/MyLibrary/functions"]
}
}

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件至 chaofa_vip@126.com

文章标题:PHP包管理器Composer与自动加载规范

文章字数:557

本文作者:Hechaofa

发布时间:2019-12-20, 10:13:47

最后更新:2019-12-22, 23:21:37

原始链接:https://chaofavip.github.io/2019/12/20/tool/composer/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏