lamansky / phpcs
这是一个具有偏见的PHP代码规范,主要目的是确保您的PHP代码在项目中的外观与其他语言尽可能相似。
Requires
- dealerdirect/phpcodesniffer-composer-installer: ^0.7.0
- slevomat/coding-standard: ^6.3.10
- squizlabs/php_codesniffer: ^3.5.5
This package is not auto-updated.
Last update: 2024-09-18 10:51:21 UTC
README
使用PHP_CodeSniffer在您的PHP项目中强制执行一组编码风格规则。
亮点
此规范是PSR-1的超集,并添加了以下规则,以及其他一些规则
- 必须用4个空格缩进,而不是制表符。
- 开括号必须在同一行:
class MyClass {
。 - 不允许在
if
语句中分配变量(例如if ($var = get()) {
)。 - 不允许“Yoda”条件(例如
if (true === $var) {
)。 - 不允许内联控制结构(总是需要花括号)。
- 不允许分组
use
声明。 - 所有方法和类常量都必须声明可见性。
- 所有函数都必须声明返回类型。
- 只能使用
[]
声明数组,而不是array()
。 - 多行数组声明必须以逗号结尾。
- 尽可能使用单引号字符串。
安装和使用
您不需要单独安装PHP_CodeSniffer。在安装此软件包时将自动安装。
在您的计算机上安装并初始化了用于您的PHP项目的Composer后,从项目根目录的终端运行此命令
composer require --dev lamansky/phpcs
然后,在项目目录中,添加一个名为phpcs.xml
的文件,该文件包含以下XML代码。(用您项目的名称替换YourProject
。)
<?xml version="1.0"?> <ruleset name="YourProject"> <rule ref="Lamansky"/> </ruleset>
如果您使用的是Atom文本编辑器,请安装linter和linter-phpcs软件包,以便在编码时实时获取错误通知。
或者,您可以从项目目录的终端运行PHP_CodeSniffer来检查编码错误
./vendor/bin/phpcs . -pv --ignore=vendor --extensions=php
自定义规则
此规则集包含一些自定义规则,但主要导入其依赖项的规则。
如果您想排除一个规则,可以在Lamansky/ruleset.xml
文件中找到它的ref
ID,然后在项目的phpcs.xml
文件中将其排除,方法是将ID放入exclude
标签的name
属性中,如下所示
<?xml version="1.0"?> <ruleset name="YourProject"> <rule ref="Lamansky"> <exclude name="Lamansky.Functions.DeclarationSpace"/> </rule> </ruleset>
一些规则有可更改的设置,您可以根据需要调整这些设置以微调规则的评估方式。这些设置作为控制各种规则的PHP类中的公共变量声明。以下是一个设置其中一个设置值的示例
<?xml version="1.0"?> <ruleset name="YourProject"> <rule ref="Lamansky"/> <rule ref="Lamansky.Functions.ReturnType"> <properties> <property name="requireNativeDeclaration" value="true"/> </properties> </rule> </ruleset>
自定义规则
大多数规则是从其他项目导入的,但也有一些规则是此项目独有的。
Lamansky.Functions.DeclarationSpace
在声明函数时,在函数名和参数列表之间强制执行一个空格: function abc (...)
。这是一个视觉提示,有助于在浏览代码时区分函数声明和函数调用。
Lamansky.Functions.ReturnType
此规则执行以下三个功能
- 要求每个函数必须声明返回类型(例如:
function abc (...) : string
)或者包含文档注释中的@return
标签。 - 如果函数返回
null
但未声明为可空返回类型(例如:?string
),则会发出警告。 - 即使函数具有
void
返回类型,也会警告函数返回了值。
如果您希望允许函数省略返回类型声明,但希望保留其他功能,请将allowUndeclaredReturnType
属性设置为true
。
支持文档注释中的@return
标签,用于PHP7的返回类型声明支持不够灵活的情况。如果您的项目仅支持PHP8或更高版本,则可以使用联合类型和mixed
关键字,可能不需要文档注释的回退。您可以通过将requireNativeDeclaration
属性设置为true
来禁用它。
相关
- eslint-config-lamansky:JavaScript代码规范。