工欲善其事,必先利其器;器欲尽其能,必先得其法。
作为 PHP 工匠,Composer
便是 PHP 工匠们的一大利器之一,下面就介绍一下如何得其法
,进而尽其能
。
项目设置
假设我们的项目需要用到这个库monolog/monolog
日志库,首先来安装这个库:
composer require monolog/monolog
执行完成后,在项目中会产生一这个个composer.json
文件。该文件描述了项目的依赖关系,并且还可能包含其他元数据。像Laravel
Yii
这些主流框架项目里都会自带这个文件。
目录结构
与Composer
有关的主要有下面三个目录或文件:
vendor
composer.json
composer.lock
vendor
,该目录是所有依赖库安装后的存放目录,即项目中所有第三方代码的常规位置,一般不要人为修改该目录的任何文件,因为每次在执行依赖库更新或安装的时候都有可能被覆盖。
composer.json
,该文件是记录了项目中依赖库的关系、版本信息、其他数据。
composer.lock
,安装依赖后,Composer 将把安装时确切的版本号列表写入composer.lock
文件,这将锁定改项目的特定版本。因此保证多人开发时所用的依赖库的版本一致,同样也保证了开发环境和生产环境的版本的一致性。在执行 composer install package_name
命令时将会检查锁文件是否存在,如果存在,它将下载指定的版本(忽略 composer.json 文件中的定义)。
使用依赖库
Composer
不仅能组织各种依赖库的关系,还能实现依赖库的自动加载,Composer
会生成一个 vendor/autoload.php
文件。项目中只需包含此文件即可开始使用这些库提供的类,而无需进行任何额外的工作:
在项目中创建 index.php
:
<?php
require __DIR__ . '/vendor/autoload.php';
$log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('logs/app.log', Monolog\Logger::DEBUG));
$log->info('Foo');
然后运行这段代码
php index.php
便会将日志信息记录到 logs/app.log
中。
常用命令
composer install
该命令将从当前目录读取composer.json
文件,解析依赖关系,并将其安装到vendor
中。
如果composer.lock
存在,则直接从composer.lock
中读取确切版本,这样可以确保使用该项目的每个人都可以获得相同版本的依赖项;如果没有composer.lock
文件,Composer
将在依赖关系解析后创建一个文件。
composer update
该命令将根据composer.json
文件,获取依赖项最新版本并更新,并将确切的版本写入composer.lock
。
composer require vendor/package
该命令将安装指定的软件包并添加到composer.json
文件中。如果不存在文件,则将即时创建一个文件。
composer remove vendor/package
该命令将移除指定的软件包。
composer self-update
该命令将Composer
本身更新到最新版本。