Composer知识总结
composer自动加载方式
-
PSR-4
1 2 3 4 5 6 7
{ "autoload": { "psr-4": { "Foo\\": "src/" } } }
-
PSR-0
1 2 3 4 5 6 7
{ "autoload": { "psr-0": { "Foo\\": "src/" } } }
-
Class-map 方式
1 2 3 4 5
{ "autoload": { "classmap": ["src/", "lib/", "Something.php"] } }
-
Files 方式
1 2 3 4 5
{ "autoload": { "files": ["src/Library/functions.php"] } }
实现自定义类、函数库的加载
- 推荐使用
files的方式引入自定义的函数库
1
2
3
4
5
{
"autoload": {
"files": ["src/Library/functions.php"]
}
}
版本约束
| 实例 | 名称 | 描述 |
|---|---|---|
1.0.2 |
确切版本号 | 确切的版本号 |
>=1.0 >=1.0,<2.0 >=1.0,<1.1|>=1.2 |
范围 | 范围内的有效版本 |
1.0.* |
通配符 | 符合该通配符的任意版本 |
~1.2~1.2.3 |
赋值运算符 | 相当于>=1.2,<2.0相当于>=1.2.3,<1.3.0 |
Composer.lock 文件
composer install后会生成该文件composer install会检查该文件是否存在,如果存在composer会忽略composer.json文件(直接使用lock文件中指定的版本)composer update会更新composer.lock文件(依赖composer.json文件)
Composer.json 键值
name包的名称,包括命名空间和项目名称description包描述version版本type类型,支持library(默认)、project、metapackage、composer-plugin等keywords关键字homepage项目主页time版本发布时间license许可协议authors作者信息name姓名email邮箱homepage作者主页role项目角色
support技术支持emailissuesforumwikiircsource
require必须的依赖项require-dev额外的依赖包,可以使用--no-dev忽略额外的依赖包conflict解决版本冲突replacesuggest建议安装的依赖包autoload自动加载psr-4psr-0classmapfiles
autoload-devinclude-path文件包含(配置include_path使用set_include_path()函数)target-dir定义当前包安装的目标文件夹minimum-stability依赖包稳定性过滤,可用标识为dev、alpha、beta、RC、stableprefer-stable确定稳定包优先级repositories自定义的包资源库 资源库scripts安装的过程中执行脚本 脚本extra任意的,供scripts使用的额外数据