你生产环境的Composer是怎么样的?

1. 什么是Composer

Composer是PHP中用于管理依赖性(dependency)的工具。它允许您在项目中声明所需的库,然后Composer会自动处理安装它们的依赖性并确保它们在正常运行时可用。

Composer可以安装来自Packagist的软件包,这是一个PHP程序包的默认存储库。此外,Composer还能够安装来源于其他源的软件包。Composer的配置文件名为composer.json,其中定义了该项目所需的依赖关系和其他有关项目的元数据。

2. 如何使用Composer

2.1 Composer的安装和配置

在使用Composer之前,您需要在系统上安装它。安装过程与任何其他PHP应用程序相同,您可以从官方网站或从GitHub存储库下载最新版本。安装完成后,请确保将Composer添加到您的系统路径以便全局使用。

在安装Composer之后,你需要配置它可以访问Packagist或其他源。通常您只需将packagist.org添加为主要源即可,如果您需要从其他源获取依赖项,可以在composer.json文件中添加配置。

{

"repositories": [

{

"type": "composer",

"url": "https://packages.example.com"

}

]

}

2.2 依赖的管理

在使用Composer时,需要在我的项目目录中创建composer.json文件。在此文件中,您可以指定所需的库,让Composer自动处理以及安装或升级它们。这里是一个简单的composer.json文件示例:

{

"require": {

"monolog/monolog": "^1.0"

}

}

这个文件中指定了需要的库 “monolog/monolog”,同时指定了版本1.0及以上。

当你使用Composer安装依赖时,它将检查每个安装的软件包并下载需要的依赖项。然后,这些依赖关系将作为软件包的一部分安装,并在您的项目中自动使用。

3. 我们的生产环境

3.1 我们在生产环境中使用Composer做什么?

我们在生产环境中使用Composer是为了高效地管理依赖性并在系统变更时轻松地更新所需的 PHP软件包。为了满足此要求,我们会在自己的部署系统上创建一个composer.json文件,并在每个PHP项目中指定所需的库。

3.2 我们的composer.json文件是如何组织的?

我们的composer.json文件中包含了项目的所有依赖性,这些依赖性列表在生产环境中可以通过Composer进行安装。为了提高性能和避免无法预测的依赖项错误,我们锁定所有的依赖项并规定要安装时的具体版本。下面是我们的composer.json文件的例子:

{

"name": "example-application",

"description": "This is an example application",

"require": {

"php": "^7.1.3",

"ext-ctype": "*",

"ext-iconv": "*",

"ext-json": "*",

"ext-mbstring": "*",

"ext-session": "*",

"fideloper/proxy": "^4.2",

"laravel/framework": "5.8.*",

"laravel/tinker": "^1.0"

},

"require-dev": {

"barryvdh/laravel-debugbar": "^3.2",

"filp/whoops": "^2.4",

"mockery/mockery": "^1.0",

"nunomaduro/collision": "^3.0",

"phpunit/phpunit": "^8.5"

},

"autoload": {

"psr-4": {

"Example\\": "app/"

},

"classmap": [

"database/seeds",

"database/factories"

]

},

"autoload-dev": {

"psr-4": {

"Tests\\": "tests/"

}

},

"config": {

"optimize-autoloader": true,

"preferred-install": "dist",

"sort-packages": true

},

"extra": {

"laravel": {

"dont-discover": []

}

},

"scripts": {

"post-autoload-dump": [

"@php artisan package:discover --ansi"

],

"post-root-package-install": [

"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""

],

"post-create-project-cmd": [

"@php artisan key:generate --ansi"

]

}

}

我们定义了项目名称、描述以及所需的库和其他元数据。有必要指定PHP的最低版本需要7.1.3或更高版本,并定义了必须的 PHP扩展。在“require”下,我们列出了生产环境下我们希望使用的软件包和其版本。我们还包括了其他的配置和自动加载指令。

3.3 Composer的生产环境最佳实践

如果你想更好地使用Composer,以下是一些在生产环境中使用Composer的最佳实践:

1. 锁定所有依赖性:在项目的composer.json文件中尽可能指定依赖项的版本或版本范围,并锁定所有依赖项的版本。这样可以确保防止在将来某个时点发生意外更改。

2. 使用包本机函数:在PHP代码中尽可能使用Composer软件包本身的功能,而不是手动编写代码。这样可以最大程度地利用软件包开发人员的经验,并减少自己的工作量。

3. 优化自动加载:在Composer的配置文件中,可以进行一些自动加载优化,例如将手动注册的类映射到PSR-4或PSR-0目录。这样可以减少自动加载的工作量并提高应用程序性能。

4. 更新依赖的安全:Composer可以检查你们项目的依赖版本是否存在安全漏洞。如果检测到问题,您可以使用 Composer提供的指令来更新依赖项以修复此类漏洞。

5. 导出依赖列表:最后,尽管使用Composer处理依赖关系非常方便,但有时我们可能需要一个列表,来记录当前应用程序正在使用的所有依赖项及其版本。可以使用Composer指令来生成此列表,以方便监控和记录。

4. 总结

使用Composer来管理 PHP应用程序的依赖关系是一个非常方便且高效的方法。不管您是一个个人开发人员还是一家企业,都可以让您的代码最大化利用PHP生态系统中的工具和库。在使用 Composer时,请遵循最佳实践,并确保在生产环境中锁定依赖项以及其他建议的配置。