本技能聚焦 Drupal 10/11 的编码规范与静态分析实践,用于检查编码标准、运行静态分析或强制执行代码风格。
用途:在提交代码前统一执行 PHPCS 检查与静态分析,并要求在每个 PHP 文件中使用 declare(strict_types=1);除非明确为扩展设计,否则倾向使用 final 类;避免深层嵌套,改用守卫子句和提前返回。
主要能力与验证命令:提供编码标准检查、自动修复、静态分析、弃用检查与安全审计命令,包括: ./vendor/bin/phpcs --standard=Drupal,DrupalPractice web/modules/custom/my_module/ ./vendor/bin/phpcbf --standard=Drupal web/modules/custom/my_module/ ./vendor/bin/phpstan analyse web/modules/custom/my_module/ drupal-check web/modules/custom/my_module/ composer audit
必需代码模式:文件头使用 declare(strict_types=1) 与命名空间;类声明使用 PHPDoc 注释和 final class;构造函数使用提升属性与 readonly 依赖注入。
命名约定:局部变量用 $snake_case,类属性用 $lowerCamelCase,类用 PascalCase,接口用 PascalCase + Interface,常量用 UPPER_SNAKE_CASE,服务用 module.service_name,钩子用 module_hook_name。
应报告的反模式:foreach 中嵌套 if/break/continue 改为 array_filter/array_map/array_reduce;三层以上深嵌套改为守卫子句和提前返回;无理由的非 final 类改为默认 final;可用 public readonly 时不用 getter/setter;类中使用 \Drupal:: 调用改为构造函数依赖注入;使用 PHP json_encode/decode 改为 \GuzzleHttp\Utils::jsonDecode/jsonEncode;避免“Service”命名空间,改用逻辑分组;避免捕获 \Exception,改捕获最窄异常类型。
PHPDoc 标准:为方法提供摘要、@param、@return 与 @throws 说明。
模块结构:列出 modules/custom/my_module/ 下的 info.yml、module、services.yml、routing.yml、permissions.yml、config(install、schema)、src(Controller、Form、Plugin/Block、EventSubscriber)与 tests(Unit、Kernel、Functional)目录布局。
使用方式:按上述命令在模块目录运行检查、自动修复与静态分析,并据反模式清单审查代码。适用场景为 Drupal 模块开发与代码审查。限制:资料未提供安装方式、版本兼容细节与配置示例。