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
技术支持email
issues
forum
wiki
irc
source
require
必须的依赖项require-dev
额外的依赖包,可以使用--no-dev
忽略额外的依赖包conflict
解决版本冲突replace
suggest
建议安装的依赖包autoload
自动加载psr-4
psr-0
classmap
files
autoload-dev
include-path
文件包含(配置include_path
使用set_include_path()
函数)target-dir
定义当前包安装的目标文件夹minimum-stability
依赖包稳定性过滤,可用标识为dev
、alpha
、beta
、RC
、stable
prefer-stable
确定稳定包优先级repositories
自定义的包资源库 资源库scripts
安装的过程中执行脚本 脚本extra
任意的,供scripts
使用的额外数据