我的现代 PHP 开发设置:Docker + PHPStorm + PHPStan

751 阅读4分钟

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


使用 Makefile 并充分利用它#

大多数开发人员都使用 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 中,我设置了文件监视程序,如下所示。

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

更多学习内容请访问:

八重樱:怎么从一名码农成为架构师的必看知识点:目录大全(不定期更新)​

zhuanlan.zhihu.com图标

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的官方群点击此处