1. 什么是Composer?
Composer是PHP开发领域中一个非常重要的工具,它是一个用于管理PHP依赖性的工具。简单来说,Composer就是一个用来下载、安装并自动加载PHP包的工具。由于Composer的广泛使用,因此开发人员可以轻松地将其他开发人员编写的代码库集成到自己的项目中,同时也能够更方便地与外部代码库进行协作。其实,Composer的全名是Dependency Manager for PHP,它是用PHP编写的,通常被认为是PHP社区最重要的工具之一。
而Composer包,就是各个PHP开发者在Github上提交的一段PHP代码。这些Composer包可以发布到Packagist仓库,在需要使用这些包的时候,我们可以很方便地使用Composer从Packagist仓库中下载并安装这些包。
2. 如何编写Composer包?
2.1 开发包文件夹结构
要编写一个Composer包,需要遵循一定的开发规范。首先,我们需要创建一个包含特定文件夹结构的文件夹,这个文件夹将成为我们的Composer包的根目录。一个典型的Composer包将包含以下基本文件和文件夹:
├── composer.json
├── src
│ └── YourNamespace
│ └── YourPackage
│ └── YourClass.php
├── public
│ └── index.php
└── tests
└── YourNamespace
└── YourPackage
└── YourTest.php
如上所示,根目录下面应该有:
?
composer.json: 包含Composer配置规范的文件。其中,我们需要定义包的名称、版本、作者、描述等等信息。
?
src: 包含包的源代码。其中,我们建议使用PSR-0或PSR-4自动加载规范来组织代码。
?
public: 包含提供给外部使用的文件、脚本和资源等。
?
tests: 包含单元测试代码。
2.2 编写composer.json文件
composer.json文件是Composer包的基础,并且其中应该声明我们的包与其他包的依赖关系。在composer.json文件中,我们应该至少包含以下字段:
?
name: 包的名称,格式为vendor/package。
?
description: 包的简短描述信息。
?
type: 包的类型,例如“library”、“project”请求,这有助于Composer更好地理解我们的包。
?
license: 包的协议。
?
require: 定义了我们的项目依赖项。这些依赖项可以是其他的Composer包,我们应该指定它们的名称、版本和咨询格式等。
?
autoload: 定义了如何在项目代码中使用Composer加载我们的代码。
{
"name": "vendor/package",
"description": "Package description",
"type": "library",
"license": "MIT",
"autoload": {
"psr-4": {
"YourNamespace\\YourPackage\\": "src/"
}
},
"require": {
"php": ">=5.5.0"
}
}
2.3 编写代码和测试用例
在src文件夹下面,我们应该编写我们的代码文件,并根据指定的autoload规范组织它们。例如,可以创建一个src/YourNamespace/YourPackage/YourClass.php的文件来定义我们的自定义类:
namespace YourNamespace\YourPackage;
class YourClass
{
public function yourMethod()
{
return 'Your Method Returns Something!';
}
}
在tests文件夹下面,我们应该编写我们的测试类,并针对自己的代码实现单元测试。例如,可以创建一个tests/YourNamespace/YourPackage/YourTest.php的文件,来测试我们定义的类:
namespace YourNamespace\YourPackage;
class YourTest extends PHPUnit_Framework_TestCase
{
public function testYourMethod()
{
$this->assertEquals('Your Method Returns Something!',
(new YourClass())->yourMethod());
}
}
2.4 将包提交到Packagist
在将我们的Composer包提交到Packagist之前,我们需要确保以下几点:
?
我们编写的代码是我们自己创建的,并且确实是开源的。
?
我们的代码符合PSR-0或PSR-4标准。
?
我们自己编写的代码被正确地测试,并且所有单元测试都通过。
待我们确保上述事项后,我们可以使用Git或SVN等工具将代码上传到自己的代码库,然后将包提交到Packagist。一旦我们将包提交到Packagist之后,其他PHP开发人员就可以使用Composer命令安装我们的包,并使用其中的代码了。
3. 如何使用Composer安装包?
3.1 安装Composer
在使用Composer安装包之前,我们需要先安装Composer。Composer的安装非常简单,只需要在系统的命令行模式下,执行以下命令:
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
3.2 创建composer.json文件
当我们需要安装一个包时,我们需要在需要安装的PHP项目中,创建一个composer.json文件,并在其中指定需要安装的包及其依赖关系。例如,如下anvil/composer.json示例文件,安装了symfony和doctrine包的最新版:
{
"require": {
"symfony/symfony": "2.6.*",
"doctrine/dbal": ">=2.4-dev"
}
}
3.3 执行Composer安装命令
到此步骤,我们就可以使用Composer的install命令来下载安装我们的包以及包依赖的其他包了。打开终端,进入到我们的项目根目录下,执行如下命令:
composer install
执行这个命令的时候,Composer就会根据我们的composer.json文件指定的依赖项,下载并安装需要的包。下载的包将会被安装在vendor目录下。安装完成后,我们就可以在我们的PHP代码中使用这些包了。
4. 总结
Composer是PHP世界中一个非常重要的依赖管理工具,使用Composer可以轻松地集成其他PHP开发者编写的代码,并且更好地与外部代码协作。对于开发一个自己的Composer包而言,我们需要按照一定的规范组织包的代码和测试用例,并上传到自己的代码库和Packagist库。使用Composer安装包也非常简单,只需要在项目中创建合适的composer.json文件,然后执行install命令即可。