本文目录导读:

- 第一步:代码层面的“战术纪律”检查(机器执行)
- 第二步:架构层面的“战术纪律”(逻辑与依赖方向)
- 第三步:Git提交纪律(团队协作)
- 第四步:测试纪律(防御体系)
- 快速“体检”总结表
- 如果发现前端“战术”不执行怎么办?
要查看一个PHP项目的“战术纪律执行”,我们得先明确一个概念:“战术纪律”在软件工程中,通常指代码规范、架构约束、团队协作流程的遵守程度。
由于我看不到你的具体项目代码,我会从代码层面和团队/流程层面给你一套完整的“体检”清单,你可以按照以下步骤在你的PHP项目(通常基于Laravel、Symfony或原生PHP)中进行排查。
第一步:代码层面的“战术纪律”检查(机器执行)
这是最客观的,靠工具和肉眼就能看出问题。
静态代码分析(代码规范与潜在Bug)
这是最直接的“纪律”考察。
- 检查工具:
PHP_CodeSniffer(检查PSR标准)、PHPStan(检查类型安全)、Psalm(检查类型安全)。 - 如何看:
- 在项目根目录运行
vendor/bin/phpcs --standard=PSR2 app/,如果输出大量错误,说明团队没有遵守代码风格纪律。 - 运行
vendor/bin/phpstan analyse app/ --level=5,如果报错,说明存在逻辑漏洞风险,这是“战术执行不到位”的体现。
- 在项目根目录运行
依赖管理纪律(Composer)
- 检查文件:
composer.lock。 - 如何看:
composer.lock存在,且提交记录中没有频繁删改,说明团队锁定版本,执行了“可复制部署”的纪律。composer.json中使用了 或dev-master作为版本号,说明项目处于“无纪律”的混沌状态,随时可能因为依赖更新导致崩溃。
数据库迁移纪律
- 检查目录:
database/migrations(Laravel)或migrations(Symfony)。 - 如何看:
是否只有增量文件,没有修改历史文件的记录?如果团队修改了已发布的迁移文件(而不是新增迁移),说明没有遵守数据库变更纪律,会导致其他环境不同步。
异常与日志纪律
- 检查文件:搜索
catch (\Exception或catch (Exception $e)。 - 如何看:
- 如果出现
catch (Exception $e) { // do nothing }或catch (Exception $e) { return null; }(静默吞掉异常),这是战术纪律的严重缺失——错误被掩盖,问题无处追踪。 - 正确的做法是:
catch (Exception $e) { Log::error(...); throw new ...; }。
- 如果出现
安全纪律(关键)
- 检查点:搜索
$_POST、$_GET直接拼接SQL的地方。 - 如何看:
- 如果存在
$sql = "SELECT ... WHERE id = " . $_GET['id'];这种裸SQL拼接,这是无视纪律的致命伤(SQL注入),正规军必须使用查询构造器或ORM(如Eloquent)。
- 如果存在
第二步:架构层面的“战术纪律”(逻辑与依赖方向)
控制器是否“发胖”(MVC纪律)
- 检查文件:
app/Http/Controllers(Laravel)或src/Controller(Symfony)。 - 如何看:
- 打开一个业务逻辑较复杂的Controller,如果方法长度超过50行,且包含了大量
if...else业务计算、Redis操作、发邮件等,说明没有遵守“瘦控制器,肥模型/服务层”的纪律。 - 正确的样子:控制器只做参数接收和调用Service,业务逻辑在Service层。
- 打开一个业务逻辑较复杂的Controller,如果方法长度超过50行,且包含了大量
服务层与Repository模式
- 检查点:是否有
app/Services或app/Repositories。 - 如何看:
- 如果项目没有Service层,且业务逻辑全堆在模型
Model的静态方法中,或堆在Controller中,说明架构纪律松散。
- 如果项目没有Service层,且业务逻辑全堆在模型
第三步:Git提交纪律(团队协作)
这一般需要通过看Git历史来执行。
- 命令:
git log --oneline --graph --decorate - 如何看:
- 提交粒度:如果一条提交信息是
fix bug或update,且一次提交修改了30个文件,说明缺乏“原子化提交”纪律(一次只做一件事)。 - 分支纪律:如果大家全在
master/main上直接开发,没有分支(Feature Branch)概念,说明团队流程纪律近乎为零。
- 提交粒度:如果一条提交信息是
第四步:测试纪律(防御体系)
- 检查目录:
tests/(Laravel/PHPUnit)。 - 如何看:
- 运行
phpunit或php artisan test。 - 如果项目没有测试用例,或者覆盖率极低,说明团队在执行“裸奔”开发,没有任何回归防御的战术纪律。
- 如果有测试,看是否只是“Happy Path”(只测成功案例),没有边界值或异常测试。
- 运行
快速“体检”总结表
你可以根据以下表格快速给项目打分:
| 维度 | 执行良好的表现(有纪律) | 执行差的表现(无纪律) | 检查方式 |
|---|---|---|---|
| 代码风格 | PSR-12标准,变量命名清晰 | 混乱缩进,驼峰与下划线混用 | phpcs |
| 依赖 | composer.lock 锁定 |
使用 版本,锁文件缺失 | 查看 composer.json |
| 异常处理 | 记录日志并抛出特定异常 | catch 后空白处理 |
搜索 catch |
| 数据库 | 增量迁移,版本可控 | 直接修改历史迁移文件 | 查看 migrations |
| 架构 | 控制器薄,Service层厚 | 控制器大包大揽,SQL遍地 | 查看 Controller |
| 安全 | 使用ORM/参数绑定 | 字符串拼接SQL,无转义 | 搜索 $_GET/$_POST |
| 测试 | 测试覆盖核心逻辑 | 无测试目录或测试为空 | 运行 phpunit |
如果发现前端“战术”不执行怎么办?
如果你的“战术”指的是前端(JS/CSS),那通常看:
- 构建产物:是不是直接手动修改了
public/js/app.js然后提交?如果是,说明没有遵守“编译后再提交”或“只提交源码”的纪律。 - 代码混淆:是否依赖外部压缩,还是源文件直接裸奔上线。
总结建议: 你可以在项目根目录运行以下三个命令组合,直接把“不守纪律”的证据拉出来:
composer run-script phpcs # 如果项目配置了的话 vendor/bin/phpstan analyse app --level=6 # 静态检查 php artisan test # 跑测试
如果这三个命令都过不去,那说明项目虽然有PHP代码,但战术纪律执行不及格,反之亦然。
如果你能告诉我你的项目具体是什么框架(如Laravel),或者项目目录结构,我可以给你更针对性的排查意见。