kleinweb / php-coding-standards
Klein学院媒体与传播学院的PHP编码标准
Requires
- php: >=8.1
- automattic/vipwpcs: ^3.0
- dealerdirect/phpcodesniffer-composer-installer: *
- doctrine/coding-standard: ^12.0
- squizlabs/php_codesniffer: ^3.7.2
- wp-coding-standards/wpcs: ^3.0
Requires (Dev)
- ergebnis/composer-normalize: ^2.43
- friendsofphp/php-cs-fixer: ^3.59
This package is auto-updated.
Last update: 2024-09-29 03:20:49 UTC
README
足够严格以满足理想主义者,足够宽松以满足现实主义者。
目标和非目标
- 明确分离工具领域,以防止冲突
- 在可行的情况下,优先考虑PHP框架互操作性小组(PHP-FIG)标准
- 鼓励WordPress特定的最佳实践,同时防止过度反应的规范
- 不支持不支持的PHP版本(显然,对吧?!)
- 防止误操作→最小化闹钟
风格:PHP-CS-Fixer(《.php-cs-fixer.dist.php》)
通常遵循Symfony的列表。Symfony标准目前基于PER-2.0。
目前通过复制粘贴逐个项目处理。
代码检查:PHP_CodeSniffer(《.phpcs.xml.dist》)
主要基于WordPress-VIP-Go
规则集。虽然我们没有使用WordPress VIP托管,但此标准鼓励最佳实践,同时允许在风格上具有灵活性。这是通过应用从WordPress核心编码标准中精心挑选的规则集,以及一系列自定义嗅探器来实现的。不幸的是(但可以理解),许多信息都引用了WordPress VIP作为平台,因为该标准假定代码将针对该托管平台。
我们还包含了许多从SlevomatCodingStandard
精心挑选的添加,以及一些从PSR12NeutronRuleset
中改编的规则[链接]。
在先前版本中,我们扩展了Doctrine编码标准,但它过于主观,导致了php-cs-fixer
和phpcbf
之间无休止的来回争论。尽管我们努力对抗这种行为,但应用类似目标的修复通常会有细微的差别。
类型安全:PHPStan(《.phpstan.neon.dist》)
每个项目至少必须通过级别0的检查。在将PHPStan引入项目之初,从级别0开始,然后逐步增加。据我们所知,在WordPress环境中,级别8是可达到的最高级别。级别9基本上禁止使用混合类型。
杂项
我们还包含了一个biome.json
文件,用于项目内部使用。这里的biome.json
可以作为其他项目的良好起点,但当前此包仅针对PHP覆盖。
《just》(《//.justfile》,《//.config/just》),《pre-commit》(《//nix/git-hooks.nix》),以及《treefmt》(《//nix/treefmt.nix》)配置也是不错的起点,但该项目并不旨在提供这些工具的通用模板。
该项目不提交《composer.lock》,以防止下游依赖问题。