通过格式化程序,短绒和构建工具的这种结合,我能够创建完全可测试的,完全可移植的解决方案,并且符合 PSR 编码标准。

使用 Makefile 并充分利用它#[1]

大多数开发人员都使用 Makefile,但很少有人有效地使用它们。以下是我典型的 Makefile 的示例:



container=app

up:
    docker-compose up -d

build:
    docker-compose rm -vsf
    docker-compose down -v --remove-orphans
    docker-compose build
    docker-compose up -d

down:
    docker-compose down

require:
    docker-compose run ${container} composer require

require-dev:
    docker-compose run ${container} composer require --dev

run:
    docker-compose run ${container} php index.php

jumpin:
    docker-compose run ${container} bash

test:
    docker-compose run ${container} ./vendor/bin/phpunit ./tests/

test-file:
    docker-compose run ${container} ./vendor/bin/phpunit ./tests/ --group $(FILE)

stan:
    docker-compose run ${container} ./vendor/bin/phpstan analyse $(FILE) --level 7

cs-fixer:
    docker-compose run ${container} ./vendor/bin/php-cs-fixer fix $(FILE)

tail-logs:
    docker-compose logs -f ${container}



命令说明

up, down, 和 build 用自己的话说。这些使我很容易与 Docker 交互,从而节省了一些按键操作。我还要确保每个项目都有相同的命令。所以我总是知道我可以使用哪些快捷方式。

require 和 require-dev 用于与位于我的应用容器中的 composer 安装进行交互。我发现仅在 apps 容器中运行作曲家很有用,为什么?过去,我在安装用于不同 PHP 版本的软件包时遇到了问题,例如,我的主机是 7.1,但是我正在处理的项目是 5.6。在容器中运行 composer 将隔离我的应用程序,并确保仅安装了正确的软件包。

run 本身就说明了问题,而 jumpin 只是我懒得保存我键入 docker exec -it <container-id> bash

test 当然可以运行我的整个测试套件,但接下来的事情将变得非常有趣。

将 IDE 挂接到 make 命令中

已创建以下所有命令以集成到我的 IDE 中。我选择的 IDE 是 PHPStorm.

每次更新文件时都会运行 test-file。它需要一个参数,即 FILE。在 PHPStorm 中,我设置了文件监视程序,如下所示。




dockercompose运行jar docker-compose run_dockercompose运行jar


stan 下面提供了更多信息,但有时我会在文件保存时运行此命令以实时静态检查我的代码 。

cs-fixer PHP-cs-fixer 是一个很棒的工具,必须确保您的代码与 [PSR] 匹配编码标准](PSR-1: Basic Coding Standard)

在 Docker 中运行一切

当我说在 docker 中运行所有东西时,我指的是应用程序,composer 、单元测试,最后是编码规范修复程序。通过在 Docker 中运行所有内容,您可以使您的项目 100% 可移植,以便任何机器上的任何人都可以简单地 clone 一份代码并立即开始。

您已经在上面的 makefile 中看到,每个命令都在运行我的 docker 映像中。这将允许任何人在任意平台 clone 下代码、运行测试、并运行应用程序。所有这些都没有在本地机器上安装 PHP。

使用 CS-Fixer 来强制编码规范

如上所述,CS Fixer 是确保开发组成员都统一遵循编码规范的好方法,请参阅 PSR 编码标准 。文档建议您全局安装它,但是按照我在容器中做所有事情的原则,我建议通过:


composer require friendsofphp/php-cs-fixer


使用 PHP Stan

对于使用 php> = 7.1 的任何项目,PHPStan 是必须具备的。本质上,它会静态分析代码以捕获错误。您将不得不使用参数类型提示和返回类型,但是通过将 PHP Stan 添加到您的工作流中,您将很快注意到代码中已经存在的细微错误,并且会捕获其他将来的错误。这一个必须有!

在团队中使用 .editorconfig

最后一个提议是 .editorconfig。此文件已签入到您的源代码管理中,并配置了团队成员的 IDE。这样可以确保在使用代码库时,所有人都使用正确的格式。为您节省不必要的代码冲突和使用的 tab 类型以及应使用的 tab 大小的争论。


[*]
end_of_line = lf
insert_final_newline = true

[*.php]
indent_style = space
indent_size = 4

[Makefile]
indent_style = tab
indent_size = 4

[.html]
indent_style = space
indent_size = 2

[{composer.json}]
indent_style = space
indent_size = 4



以上内容希望帮助到大家