typo3 / coding-standards
任何TYPO3相关项目或扩展的编码规范集合
Requires
- php: ^8.1
- ext-json: *
- friendsofphp/php-cs-fixer: ^3.49
- symfony/console: ^6.4 || ^7.0
- symfony/filesystem: ^6.4 || ^7.0
Requires (Dev)
- composer/package-versions-deprecated: ^1.11.99.5
- ergebnis/composer-normalize: ^2.28
- keradus/cli-executor: ^1.5
- maglnet/composer-require-checker: ^4.7.1
- overtrue/phplint: ^9.0
- phpstan/extension-installer: ^1.3.1
- phpstan/phpstan: ^1.11.3
- phpstan/phpstan-deprecation-rules: ^1.2.0
- phpstan/phpstan-phpunit: ^1.4.0
- phpstan/phpstan-strict-rules: ^1.6.0
- phpstan/phpstan-symfony: ^1.4.3
- phpunit/phpunit: ^10.1.3
- symfony/finder: ^6.4 || ^7.0
- symfony/process: ^6.4 || ^7.0
README
你知道这种感觉:你正在开发自己的扩展,然后为TYPO3做出贡献,TYPO3会提供所有用于检查编码规范的好东西。
同样的事情也发生在我们所有人身上!幸运的是,TYPO3在核心中已经有了这种配置,现在它可以单独使用——即插即用,为你准备好了!
无论你是扩展开发者,还是TYPO3贡献者,或者正在处理自己的TYPO3项目,这都无关紧要。
安装
由于这是一个Composer包,请在您的Composer项目中运行composer require --dev typo3/coding-standards
,当然包括TYPO3项目、扩展或任何其他Composer项目。
包中有什么?
这些是在TYPO3核心开发中使用的编码规范。我们不如将这些信息放入我们的主要仓库中,它应该有助于将某些规则应用到其他项目上。TYPO3不仅仅是TYPO3核心!
PHP-CS-Fixer规则
确保您的PHP文件遵循相同的规则。
.editorconfig
如果您在一个团队中工作,并且使用不同的IDE设置,.editorconfig
可以帮助您在所有编辑器中拥有相同的设置。无论是VS-Code、vim还是PhpStorm,几乎每个编辑器现在都支持.editorconfig
。
将TYPO3规则集作为样板设置
我们的编码规范文件可以为您设置这些。运行
composer exec typo3-coding-standards setup
或通过快捷方式,这当然适用于每个命令
composer exec t3-cs s
类型project
或extension
会自动检测。如果检测对您不起作用(也请告诉我们您的情况,在https://github.com/TYPO3/coding-standards/issues),您可以像这样指定所需的类型作为参数
composer exec typo3-coding-standards setup project
或
composer exec typo3-coding-standards setup extension
查看您根目录中新建的文件
- .php-cs-fixer.dist.php
- .editorconfig
对于项目,默认配置为src
文件夹,但您可以根据需要配置您的扩展或PHP代码所在的位置。对于扩展,PHP-CS-Fixer会扫描整个基础目录。
此外,您还可以像使用PHP-CS-Fixer一样配置您的PHP-CS-Fixer缓存文件文件夹和其他配置。
您可以选择将它们提交到您的Git仓库,这是推荐的方法。
更新TYPO3规则集
要更新规则集,请运行composer update typo3/coding-standards
。更新的PHP-CS-Fixer规则集会立即应用,但.editorconfig
文件的更改必须手动运行composer exec typo3-coding-standards update
来应用。
这将覆盖您在.editorconfig
中的更改,并将其重置为TYPO3默认值。在继续更新之前,请确保您的文件已正确提交到您的仓库。
您还可以通过向setup
命令提供--force
选项来将所有文件重置为TYPO3默认值
composer exec -- typo3-coding-standards setup --force
如果您使用选项,请记住在exec
之后提供两个短横线。
高级用法示例
显示特定命令的帮助,例如使用composer exec typo3-coding-standards help setup
。
您可以指定文件的目标文件夹,或者只设置部分TYPO3编码规范,以下是一些示例。
仅设置.editorconfig
composer exec -- typo3-coding-standards setup --rule-set=editorconfig
在“构建”文件夹中设置 .php-cs-fixer.dist.php
composer exec -- typo3-coding-standards setup --target-dir=Build --rule-set=php-cs-fixer
Symfony 对所有命令都提供了优秀的快捷支持,例如,这与上面最后一个命令相同
composer exec -- t3-cs s -d=Build -r=php-cs-fixer
更新 .editorconfig
composer exec t3-cs u
直接运行脚本,不使用 Composer
vendor/bin/typo3-coding-standards setup
当然,这是基于二进制文件已通过 Composer 安装在默认位置 vendor/bin
。这就是为什么我们首先推荐使用 composer exec
,因为 Composer 了解正确的位置。
执行 PHP-CS-Fixer
一旦你按照上面的步骤进行,运行 PHP CS Fixer 就像这样
composer exec php-cs-fixer
查看我们的 GitHub Actions 持续集成工作流程,了解如何使用此包自动化测试工作流程。
接下来是什么?
我们很乐意为所有 PHP 文件提供许可证头,但有一些限制(命名空间必须在许可证头之下),因此此选项默认未启用。
关于我们的标准的一则注释
PHP 编码指南
TYPO3 的编码指南随着时间的推移而发展。我们很高兴遵循 PHP-FIG 以及 PSR-1/PSR-2 和 PSR-12。这就是我们致力于遵循这些指南的原因。
然而,还有一些我们认为很好的规则
- 删除使用语句中的前导斜杠。
- PHP 单行数组不应有尾随逗号。
- 关闭分号前的单行空白是禁止的。
- 在 PHP 源代码中删除未使用的 use 语句
- 确保连接至少有一个空白
- 删除空白行末尾的尾随空白。
视频教程
此包的维护和开发
此包不是旨在定期更新,因为讨论编码指南需要花费很多时间,通常是品味的问题。尽管如此,如果你觉得我们遗漏了什么,你总是可以提出问题。
Github action 自动将文件与 TYPO3 核心同步。请不要为这些更改打开 pull request,而是将您的更改推送到 TYPO3 核心库。
开发
源代码包含一个 DDEV Local 配置,这使得使用 Composer 和切换 PHP 版本变得非常容易。有关 DDEV 的更多信息,请参阅 文档。
在 composer.json
中,许多脚本在您推送错误更改之前本地运行 CI。此外,还集成了某些修复命令。
手动从核心更新文件
同步任务每晚执行一次。您还可以在 GitHub 的 Actions
选项卡上手动启动,通过选择 Core Synchronization
并在主分支上运行工作流程。
许可证 & 感谢
此包可在 MIT 许可证下获得,因为它在很大程度上依赖于 PHP-CS-Fixer 代码。
此外,我要感谢 2015 年启动这一系列规则的 TYPO3 核心团队,以及 PHP-CS-Fixer 包的创建者和维护者。
本尼·马克,TYPO3 项目负责人