利用 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 交互,从而节省了一些按键操作。
我还要确保每个项目都有相同的命令。
以是我总是知道我可以利用哪些快捷办法。

phpstorm创建php项目PHP开辟设置Docker  Storm  Stan Python

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