mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-04-05 08:43:29 +08:00
docs(zh-CN): update
This commit is contained in:
36
docs/zh-CN/rules/php/coding-style.md
Normal file
36
docs/zh-CN/rules/php/coding-style.md
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
paths:
|
||||
- "**/*.php"
|
||||
- "**/composer.json"
|
||||
---
|
||||
|
||||
# PHP 编码风格
|
||||
|
||||
> 此文件在 [common/coding-style.md](../common/coding-style.md) 的基础上扩展了 PHP 相关内容。
|
||||
|
||||
## 标准
|
||||
|
||||
* 遵循 **PSR-12** 的格式化和命名约定。
|
||||
* 在应用程序代码中优先使用 `declare(strict_types=1);`。
|
||||
* 在所有新代码允许的地方使用标量类型提示、返回类型和类型化属性。
|
||||
|
||||
## 不可变性
|
||||
|
||||
* 对于跨越服务边界的数据,优先使用不可变的 DTO 和值对象。
|
||||
* 在可能的情况下,对请求/响应负载使用 `readonly` 属性或不可变构造函数。
|
||||
* 对于简单的映射使用数组;将业务关键的结构提升为显式类。
|
||||
|
||||
## 格式化
|
||||
|
||||
* 使用 **PHP-CS-Fixer** 或 **Laravel Pint** 进行格式化。
|
||||
* 使用 **PHPStan** 或 **Psalm** 进行静态分析。
|
||||
* 将 Composer 脚本纳入版本控制,以便在本地和 CI 中运行相同的命令。
|
||||
|
||||
## 错误处理
|
||||
|
||||
* 对于异常状态抛出异常;避免在新代码中返回 `false`/`null` 作为隐藏的错误通道。
|
||||
* 在框架/请求输入到达领域逻辑之前,将其转换为经过验证的 DTO。
|
||||
|
||||
## 参考
|
||||
|
||||
有关更广泛的服务/仓库分层指导,请参阅技能:`backend-patterns`。
|
||||
25
docs/zh-CN/rules/php/hooks.md
Normal file
25
docs/zh-CN/rules/php/hooks.md
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
paths:
|
||||
- "**/*.php"
|
||||
- "**/composer.json"
|
||||
- "**/phpstan.neon"
|
||||
- "**/phpstan.neon.dist"
|
||||
- "**/psalm.xml"
|
||||
---
|
||||
|
||||
# PHP 钩子
|
||||
|
||||
> 此文件在 [common/hooks.md](../common/hooks.md) 的基础上扩展了 PHP 相关的内容。
|
||||
|
||||
## PostToolUse 钩子
|
||||
|
||||
在 `~/.claude/settings.json` 中配置:
|
||||
|
||||
* **Pint / PHP-CS-Fixer**:自动格式化编辑过的 `.php` 文件。
|
||||
* **PHPStan / Psalm**:在类型化代码库中对编辑过的 PHP 文件运行静态分析。
|
||||
* **PHPUnit / Pest**:当编辑影响到行为时,为被修改的文件或模块运行针对性测试。
|
||||
|
||||
## 警告
|
||||
|
||||
* 当编辑过的文件中存在 `var_dump`、`dd`、`dump` 或 `die()` 时发出警告。
|
||||
* 当编辑的 PHP 文件添加了原始 SQL 或禁用了 CSRF/会话保护时发出警告。
|
||||
33
docs/zh-CN/rules/php/patterns.md
Normal file
33
docs/zh-CN/rules/php/patterns.md
Normal file
@@ -0,0 +1,33 @@
|
||||
---
|
||||
paths:
|
||||
- "**/*.php"
|
||||
- "**/composer.json"
|
||||
---
|
||||
|
||||
# PHP 设计模式
|
||||
|
||||
> 本文档在 [common/patterns.md](../common/patterns.md) 的基础上,补充了 PHP 相关的内容。
|
||||
|
||||
## 精炼控制器,明确服务
|
||||
|
||||
* 保持控制器专注于传输层:认证、验证、序列化、状态码。
|
||||
* 将业务规则移至应用/领域服务中,这些服务无需 HTTP 引导即可轻松测试。
|
||||
|
||||
## DTO 与值对象
|
||||
|
||||
* 对于请求、命令和外部 API 负载,用 DTO 替代结构复杂的关联数组。
|
||||
* 对于货币、标识符、日期范围和其他受约束的概念,使用值对象。
|
||||
|
||||
## 依赖注入
|
||||
|
||||
* 依赖于接口或精简的服务契约,而非框架全局变量。
|
||||
* 通过构造函数传递协作者,这样服务就无需依赖服务定位器查找,易于测试。
|
||||
|
||||
## 边界
|
||||
|
||||
* 当模型层职责超出持久化时,应将 ORM 模型与领域决策隔离。
|
||||
* 将第三方 SDK 封装在小型的适配器之后,使代码库的其余部分依赖于你的契约,而非它们的。
|
||||
|
||||
## 参考
|
||||
|
||||
关于端点约定和响应格式的指导,请参见技能:`api-design`。
|
||||
34
docs/zh-CN/rules/php/security.md
Normal file
34
docs/zh-CN/rules/php/security.md
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
paths:
|
||||
- "**/*.php"
|
||||
- "**/composer.lock"
|
||||
- "**/composer.json"
|
||||
---
|
||||
|
||||
# PHP 安全
|
||||
|
||||
> 本文档在 [common/security.md](../common/security.md) 的基础上,补充了 PHP 相关的内容。
|
||||
|
||||
## 输入与输出
|
||||
|
||||
* 在框架边界验证请求输入(`FormRequest`、Symfony Validator 或显式 DTO 验证)。
|
||||
* 默认在模板中转义输出;将原始 HTML 渲染视为需要合理解释的例外情况。
|
||||
* 未经验证,切勿信任查询参数、Cookie、请求头或上传文件的元数据。
|
||||
|
||||
## 数据库安全
|
||||
|
||||
* 对所有动态查询使用预处理语句(`PDO`、Doctrine、Eloquent 查询构建器)。
|
||||
* 避免在控制器/视图中拼接 SQL 字符串。
|
||||
* 谨慎限定 ORM 批量赋值范围,并明确列出可写入字段的白名单。
|
||||
|
||||
## 密钥与依赖项
|
||||
|
||||
* 从环境变量或密钥管理器中加载密钥,切勿从已提交的配置文件中读取。
|
||||
* 在 CI 中运行 `composer audit`,并在添加依赖项前审查新包维护者的可信度。
|
||||
* 审慎锁定主版本号,并及时移除已废弃的包。
|
||||
|
||||
## 认证与会话安全
|
||||
|
||||
* 使用 `password_hash()` / `password_verify()` 存储密码。
|
||||
* 在身份验证和权限变更后重新生成会话标识符。
|
||||
* 对状态变更的 Web 请求强制实施 CSRF 保护。
|
||||
35
docs/zh-CN/rules/php/testing.md
Normal file
35
docs/zh-CN/rules/php/testing.md
Normal file
@@ -0,0 +1,35 @@
|
||||
---
|
||||
paths:
|
||||
- "**/*.php"
|
||||
- "**/phpunit.xml"
|
||||
- "**/phpunit.xml.dist"
|
||||
- "**/composer.json"
|
||||
---
|
||||
|
||||
# PHP 测试
|
||||
|
||||
> 本文档在 [common/testing.md](../common/testing.md) 的基础上,补充了 PHP 相关的内容。
|
||||
|
||||
## 测试框架
|
||||
|
||||
默认使用 **PHPUnit** 作为测试框架。如果项目已在使用 **Pest**,也是可以接受的。
|
||||
|
||||
## 覆盖率
|
||||
|
||||
```bash
|
||||
vendor/bin/phpunit --coverage-text
|
||||
# or
|
||||
vendor/bin/pest --coverage
|
||||
```
|
||||
|
||||
在 CI 中优先使用 **pcov** 或 **Xdebug**,并将覆盖率阈值设置在 CI 中,而不是作为团队内部的隐性知识。
|
||||
|
||||
## 测试组织
|
||||
|
||||
* 将快速的单元测试与涉及框架/数据库的集成测试分开。
|
||||
* 使用工厂/构建器来生成测试数据,而不是手动编写大量的数组。
|
||||
* 保持 HTTP/控制器测试专注于传输和验证;将业务规则移到服务层级的测试中。
|
||||
|
||||
## 参考
|
||||
|
||||
关于整个仓库范围内的 RED -> GREEN -> REFACTOR 循环,请参见技能:`tdd-workflow`。
|
||||
Reference in New Issue
Block a user