包管理
只要你有一个composer.json文件在目录中,那么整个目录就是一个包。当你添加一个 require到项目中,你就是在创建一个依赖于其它库的包。你的项目和库之间唯一的区别是,你的项目是一个没有名字的包。为了使它成为一个可安装的包,只需要给它一个名称。可以通过composer.json中的name来定义。
Composer将那些已经安装在系统上,但并不是由Composer安装的包视为一个虚拟的平台软件包。这包括PHP本身,PHP扩展和一些系统库。可以使用composer show --platform 命令来获取可用的平台软件包列表。在composer.json中:
php表示用户的PHP版本要求,可以对其做出限制。例如 >=5.4.0。如果需要64位版本的 PHP,你可以使用 php-64bit 进行限制。
hhvm代表的是HHVM(也就是HipHop Virtual Machine)运行环境的版本,并且允许你设置一个版本限制,例如,'>=2.3.3'。
ext-<name>可以指定需要的PHP扩展(包括核心扩展)。通常PHP拓展的版本可以是不一致的,将它们的版本约束为 * 是一个不错的主意。一个 PHP 扩展包的例子:包名可以写成 ext-gd。
lib-<name>允许对PHP库的版本进行限制。以下是可供使用的名称:curl、iconv、icu、libxml、openssl、pcre、uuid、xsl。
需要一些方法来指明自己开发的包的版本,当在Packagist上发布自己的包时,它能够从 VCS (git, svn, hg) 的信息推断出包的版本,因此你不必手动指明版本号。如果需要手动创建并明确指定,只需在composer.json文件中添加version字段即可。同时,对于每一个看起来像版本号的标签,都会相应的创建一个包的版本,它应该符合(v)X.Y.Z的形式,alpha, beta, RC等后缀是可选的。
如果你愿意,可以在项目中提交 composer.lock 文件。这将帮助你的团队始终针对同一个依赖版本进行测试。任何时候,这个锁文件都只对于你的项目产生影响。如果不想提交锁文件,并且你正在使用 Git,那么请将它添加到.gitignore文件中。
如果你有一个包含composer.json的库存储在线上版本VCS,那么它也可以被Composer所安装,此时除了需要指定require字段外,还需要在repositories中指定type和url。详情见上一节的介绍。当然,你更可以直接将你的包发布在packagist上,这样就不需要指定repositories字段了。