安装 Composer,你只需要下载 composer.phar
可执行文件。
curl -sS https://getcomposer.org/installer | php
详细请查看 Composer简介
要检查 Composer 是否正常工作,只需要通过 php
来执行 PHAR:
php composer.phar
这将返回给你一个可执行的命令列表。
**注意:** 你也可以仅执行 `--check` 选项而无需下载 Composer。 要获取更多的信息请使用 `--help`。
curl -sS https://getcomposer.org/installer | php -- --help
>
composer.json:项目安装
要开始在你的项目中使用 Composer,你只需要一个 composer.json
文件。该文件包含了项目的依赖和其它的一些元数据。
这个 语义化版本号 的项目最有用。一个常见的用法是标记你所依赖的最低版本,像 ~1.2
(允许1.2以上的任何版本,但不包括2.0)。由于理论上直到2.0应该都没有向后兼容性问题,所以效果很好。你还会看到它的另一种用法,使用 ~
指定最低版本,但允许版本号的最后一位数字上升。
注意: 虽然
2.0-beta.1
严格地说是早于2.0
,但是,根据版本约束条件, 例如~1.2
却不会安装这个版本。就像前面所讲的~1.2
只意味着.2
部分可以改变,但是1.
部分是固定的。
稳定性
默认情况下只有稳定的发行版才会被考虑在内。如果你也想获得 RC、beta、alpha 或 dev 版本,你可以使用 稳定标志。你可以对所有的包做 最小稳定性 设置,而不是每个依赖逐一设置。
安装依赖包
获取定义的依赖到你的本地项目,只需要调用 composer.phar
运行 install
命令。
php composer.phar install
接着前面的例子,这将会找到 monolog/monolog
的最新版本,并将它下载到 vendor
目录。 这是一个惯例把第三方的代码到一个指定的目录 vendor
。如果是 monolog 将会创建 vendor/monolog/monolog
目录。
小技巧: 如果你正在使用Git来管理你的项目, 你可能要添加
vendor
到你的.gitignore
文件中。 你不会希望将所有的代码都添加到你的版本库中。
另一件事是 install
命令将创建一个 composer.lock
文件到你项目的根目录中。
composer.lock
- 锁文件
在安装依赖后,Composer 将把安装时确切的版本号列表写入 composer.lock
文件。这将锁定改项目的特定版本。
请提交你应用程序的 composer.lock
(包括 composer.json
)到你的版本库中
这是非常重要的,因为 install
命令将会检查锁文件是否存在,如果存在,它将下载指定的版本(忽略 composer.json
文件中的定义)。
这意味着,任何人建立项目都将下载与指定版本完全相同的依赖。你的持续集成服务器、生产环境、你团队中的其他开发人员、每件事、每个人都使用相同的依赖,从而减轻潜在的错误对部署的影响。即使你独自开发项目,在六个月内重新安装项目时,你也可以放心的继续工作,即使从那时起你的依赖已经发布了许多新的版本。
如果不存在 composer.lock
文件,Composer 将读取 composer.json
并创建锁文件。
这意味着如果你的依赖更新了新的版本,你将不会获得任何更新。此时要更新你的依赖版本请使用 update
命令。这将获取最新匹配的版本(根据你的 composer.json
文件)并将新版本更新进锁文件。
php composer.phar update
如果只想安装或更新一个依赖,你可以白名单它们:
php composer.phar update monolog/monolog [...]
注意: 对于库,并不一定建议提交锁文件 请参考:库的锁文件.
Packagist
packagist website (packagist.org),你可以浏览和搜索资源包。
任何支持 Composer 的开源项目应该发布自己的包在 packagist 上。虽然并不一定要发布在 packagist 上来使用 Composer,但它使我们的编程生活更加轻松。
自动加载
对于库的自动加载信息,Composer 生成了一个 vendor/autoload.php
文件。你可以简单的引入这个文件,你会得到一个免费的自动加载支持。
require 'vendor/autoload.php';
这使得你可以很容易的使用第三方代码。例如:如果你的项目依赖 monolog,你就可以像这样开始使用这个类库,并且他们将被自动加载。
$log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
$log->addWarning('Foo');
你可以在 composer.json
的 autoload
字段中增加自己的 autoloader。
{
"autoload": {
"psr-4": {"Acme\\": "src/"}
}
}
Composer 将注册一个 <a rel="nofollow" href="http://www.php-fig.org/psr/psr-4/" "="" style="padding: 0px; margin: 0px; background-color: transparent; color: rgb(45, 133, 202);">PSR-4 autoloader 到 Acme
命名空间。
你可以定义一个从命名空间到目录的映射。此时 src
会在你项目的根目录,与 vendor
文件夹同级。例如 src/Foo.php
文件应该包含 Acme\Foo
类。
添加 autoload
字段后,你应该再次运行 install
命令来生成 vendor/autoload.php
文件。
引用这个文件也将返回 autoloader 的实例,你可以将包含调用的返回值存储在变量中,并添加更多的命名空间。这对于在一个测试套件中自动加载类文件是非常有用的,例如。
$loader = require 'vendor/autoload.php';
$loader->add('Acme\\Test\\', __DIR__);
除了 PSR-4 自动加载,classmap 也是支持的。这允许类被自动加载,即使不符合 PSR-0 规范。
注意: Composer 提供了自己的 autoloader。如果你不想使用它,你可以仅仅引入 vendor/composer/autoload_*.php
文件,它返回一个关联数组,你可以通过这个关联数组配置自己的 autoloader。