利用 Makefile 并充分利用它#
大多数开拓职员都利用 Makefile,但很少有人有效地利用它们。以下是我范例的 Makefile 的示例:
社区粉丝福利安排一波PHP最全进阶资料,免费赠予container=appup: docker-compose up -dbuild: docker-compose rm -vsf docker-compose down -v --remove-orphans docker-compose build docker-compose up -ddown: docker-compose downrequire: docker-compose run ${container} composer requirerequire-dev: docker-compose run ${container} composer require --devrun: docker-compose run ${container} php index.phpjumpin: docker-compose run ${container} bashtest: 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 7cs-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 只是我
test 当然可以运行我的全体测试套件,但接下来的事情将变得非常有趣。
将 IDE 挂接到 make 命令中
已创建以下所有命令以集成到我的 IDE 中。我选择的 IDE 是 PHPStorm.
每次更新文件时都会运行 test-file。它须要一个参数,即 FILE。在 PHPStorm 中,我设置了文件监视程序,如下所示。
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 = lfinsert_final_newline = true[.php]indent_style = spaceindent_size = 4[Makefile]indent_style = tabindent_size = 4[.html]indent_style = spaceindent_size = 2[{composer.json}]indent_style = spaceindent_size = 4