Composer使用教程「基本用法」

1. Composer简介

Composer是PHP中使用最广泛的依赖管理器,通过在项目中使用Composer,可以方便地管理与项目关联的第三方PHP类库和工具包。与其他语言中的包管理器不同,Composer也可以自定义管理库的版本,避免了在不同的开发环境中因为版本不一致导致的问题。

在使用Composer之前,需要在系统中安装最新版本的Composer。Linux和MacOS系统可以使用以下命令来安装:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Windows系统可以从Composer官方网站上下载并安装Windows Installer,详细信息请参考官方文档

2. Composer基本用法

2.1 创建Composer项目

在创建Composer项目之前,需要先在命令行中进入项目目录。假设我们要在目录/home/user/example下创建一个新的Composer项目,可以使用以下命令:

cd /home/user/example

composer init

执行composer init命令后,Composer会引导我们完成一个简单的配置过程,其中包含了项目的名称、描述、作者、许可证、依赖库等信息。在完成配置后,Composer会在当前目录中生成一个composer.json文件,该文件中包含了我们刚才配置的所有信息。

2.2 添加依赖库

在Composer中,添加依赖库有两种方式:全局添加和项目添加。

全局添加可以使您在任何项目中使用,可以使用以下命令添加:

composer config --global repositories.packagist composer https://mirrors.aliyun.com/composer/

以上命令将mirrors.aliyun.com添加为Composer的全局镜像,提升依赖库的下载效率。

项目添加依赖库,则可以通过在composer.json文件中修改requirerequire-dev节点来实现。假设我们要添加monolog/monolog库作为项目的依赖库,可以在composer.json文件中添加以下内容:

"require": {

"monolog/monolog": "^2.0"

}

修改完成后,使用以下命令安装依赖:

composer install

命令执行完成后,Composer会在vendor目录下创建一个monolog目录,并将monolog/monolog库以及其依赖库下载到该目录中。

2.3 更新依赖库

在项目开发过程中,依赖库的版本可能会发生变化。如果要更新当前项目中的依赖库版本,可以使用以下命令:

composer update

命令执行完成后,Composer会将依赖库更新到composer.json文件中指定的版本。

2.4 查看依赖库信息

使用以下命令可以查看当前项目中已安装的库信息:

composer show

该命令执行完后,会列出当前项目中已安装的库名称、版本号和库的详细信息。

2.5 删除依赖库

如果我们要删除当前项目中的依赖库,可以使用以下命令:

composer remove monolog/monolog

以上命令将删除monolog/monolog库以及其依赖库。

3. Composer高级用法

3.1 自定义依赖库安装目录

在默认情况下,Composer会将依赖库安装到项目的vendor目录下。如果我们要将某些依赖库安装到其他目录下,可以在composer.json文件中进行配置。例如,我们要将monolog/monolog库安装到libs/monolog目录下:

"config": {

"vendor-dir": "libs"

},

"require": {

"monolog/monolog": "^2.0"

}

修改vendor-dir节点后,使用以下命令安装依赖:

composer install

该命令执行完成后,monolog/monolog库将被安装到libs/monolog目录中。

3.2 使用Composer自动加载类

Composer不仅可以管理依赖库,还可以自动加载类,使得PHP的类文件自动引入。

在默认情况下,Composer使用psr-4自动加载规范来加载类。我们可以在composer.json文件中的autoload节点中添加以下内容,指定需要自动加载的类的命名空间和对应的路径:

"autoload": {

"psr-4": {

"Example\\": "src/"

}

}

以上配置指定了一个命名空间Example,将该命名空间下的类文件加载到src目录中。

为了使得Composer自动加载类,我们需要在PHP文件中调用以下语句:

require_once __DIR__.'/vendor/autoload.php';

在以上语句调用后,PHP将自动引入所有命名空间为Example下的类文件。

3.3 自定义依赖库版本

在项目中可以使用以下方法定义需要使用的依赖库的版本:

"require": {

"monolog/monolog": "^2.0"

}

以上方法使用^来指定依赖库的版本,^2.0表示使用2.0及以上的版本,但是低于3.0。如果我们希望使用特定版本,可以直接指定其版本号:

"require": {

"monolog/monolog": "2.0.0"

}

除了以上两种方法,Composer还支持使用区间符号来指定依赖库的版本,例如:

"require": {

"monolog/monolog": ">1.0.0,<3.0.0"

}

以上配置表示使用版本高于1.0.0但低于3.0.0的monolog/monolog库。

3.4 自定义依赖库源

在默认情况下,Composer使用packagist.org作为依赖库源。但是有些时候,由于网络原因或者国内源与国外源不同步的缘故,我们需要更换依赖库源。我们可以使用以下方法修改依赖库源:

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

以上命令将mirrors.aliyun.com设置为全局依赖库源。我们也可以在composer.json文件中指定依赖库源:

"repositories": [

{

"type": "composer",

"url": "https://mirrors.aliyun.com/composer/"

}

]

以上内容将把依赖库源设置为mirrors.aliyun.com

3.5 自定义依赖库安装脚本

当我们安装某些连带复杂的依赖库,比如需要生成配置文件或安装扩展时,可以使用Composer提供的scripts节点来指定自定义的脚本。

以下是一段示例代码:

"scripts": {

"post-install-cmd": [

"Example\\Installer::install"

],

"post-update-cmd": [

"Example\\Installer::update"

]

}

在以上代码中,我们在scripts节点下添加了两个键值对:post-install-cmdpost-update-cmd。分别表示安装依赖库后和更新依赖库后需要执行的脚本。

在以上代码中,我们调用了一个叫做Example\\Installer的类中的静态方法install()update()。我们需要保证Example\\Installer类和方法都存在,并且将该类所在的文件加载到PHP中。需要注意的是,在执行post-update-cmd脚本时,会将post-install-cmd的脚本也一同执行。

4. 编写可重用的Composer库

4.1 创建源代码

要创建一个可重用的Composer库,首先需要创建源代码。我们可以在本地或者GitHub等平台上创建一个新的Git仓库,并将源代码上传到仓库中。

4.2 创建Composer包

创建好源代码后,我们可以在composer.json文件中添加以下内容:

{

"name": "vendor/package",

"type": "library",

"description": "Package description",

"keywords": ["package", "keywords"],

"homepage": "https://example.com",

"license": "MIT",

"authors": [

{

"name": "Author Name",

"email": "author@example.com"

}

],

"minimum-stability": "dev",

"require": {

"php": ">=7.3"

},

"autoload": {

"psr-4": {

"Vendor\\Package\\": "src/"

}

}

}

其中,name表示包的名称,type表示包的类型,description表示包的描述,keywords表示包的关键词,homepage表示包的主页地址,license表示包的许可证,authors表示包的作者信息。

在以上代码中,我们还指定了PHP的最低版本号,以及自动加载规则。

4.3 打标签

在每次库代码发生重大更新时,我们需要在Git仓库中打上一个标签,以便后续版本迭代或者升级。

使用以下命令来打标签:

git tag -a 1.0.0 -m "Release version 1.0.0"

以上命令将在Git仓库中打上一个名称为1.0.0的标签,并添加了一条消息Release version 1.0.0

4.4 发布到Packagist

发布到Packagist之前,我们需要先在composer.json文件中添加repository节点:

{

"repositories": [

{

"type": "composer",

"url": "https://packagist.org"

}

]

}

repositories节点中,我们添加了一个类型为composer的依赖库,并指定其地址为https://packagist.org

在确认composer.json文件的配置信息无误后,我们可以在命令行中执行以下命令发布到Packagist上:

git push --tags

以上命令将当前代码库的标签推送到Git仓库中,并加入依赖库源。在之后的开发中,我们可以使用以下命令来安装该可重用的Composer库:

composer require vendor/package

以上命令将自动从依赖库源中下载vendor/package库,并将其依赖库自动解决依赖关系后安装到项目中。

5. 总结

Composer是PHP中非常常用的依赖管理器,可以方便地管理与项目关联的第三方PHP类库和工具包。在使用Composer时,需要了解如何创建一个Composer项目,如何添加、删除、更新以及查看依赖库信息。同时,还需要掌握如何使用Composer自动加载类、自定义依赖库版本、自定义依赖库源、自定义依赖库安装脚本等高级用法。最后,还讲解了如何创建一个可重用的Composer库,并将其发布到Packagist上供其他项目使用。