spindogs / phpcs
Spindogs编码标准
Requires
- php: >=5.6.4
This package is auto-updated.
Last update: 2024-09-19 23:27:04 UTC
README
所有PHP代码必须遵守PSR-1和PSR-2所描述的标准。这些建议可以在以下地址完整阅读:http://www.php-fig.org/psr/。
为方便使用,以下是对这些标准的总结。
遗留代码
尽管所有新的代码(包括添加到旧文件的代码)都必须遵循这些标准,但您不需要将任何现有的遗留代码转换为这些标准。
文件
- 所有PHP文件必须使用Unix LF(换行符)行结束符。
缩进
- 代码必须使用4个空格进行缩进,而不是制表符。
PHP关键字
- PHP关键字必须全部小写(例如:
if
、while
、for
等)。 - PHP常量
true
、false
和null
必须全部小写。
命名
PSR-1标准对代码的命名没有做出任何建议,只是指出必须使用一致的风格。因此,Spindogs更喜欢以下命名风格
- 常量必须声明为全大写(使用下划线分隔)。
- 类名必须声明为标题大小写。
- 方法名必须声明为驼峰大小写。
- 属性名必须声明为蛇形大小写。
- 变量必须声明为蛇形大小写。
全局函数
应尽可能避免使用全局函数,而是将辅助函数封装在类中。
类
所有属性必须声明可见性(public
、protected
、private
)。
<?php
namespace Vendor\Package;
class ClassName
{
public $foo = null;
}
方法
- 所有方法必须声明可见性(
public
、protected
、private
)。 - 悬挂括号 - 开括号必须单独一行。
- 如果存在,静态声明必须位于可见性之后。
示例
/**
* @param int $arg1
* @param string $arg2
* @param array $arg3
* @return void
*/
public static function fooBarBaz($arg1, &$arg2, $arg3 = [])
{
//method body
}
文档注释
所有方法都必须与一个文档注释相关联。至少,这个文档注释必须记录每个方法参数的@param
类型。
建议每个方法都使用@return
标签以保持文档注释的一致性(对于没有返回值的方法使用@return void
)。
控制结构
- 控制结构关键字之后必须有一个空格。
- 开括号必须与控制结构关键字在同一行。
- 闭括号和开括号之间必须有一个空格。
- 应使用
elseif
而不是else if
。
示例
if ($expr1) {
//if body
} elseif (isset($expr2) && isset($expr3)) {
//elseif body
} else {
//else body;
}
一个foreach
语句如下所示
foreach ($iterable as $key => $value) {
//foreach body
}
变量
变量名应准确描述其功能。然而,在特殊情况下允许以下变量名
$q; //used for SQL queries
$i; //used as a pointer within a loop
$r; //used within a loop to denote a row array/object
字符串
变量不得放在双引号字符串内。
//incorrect
echo "Hello world, my name is $user_name - nice to meet you";
在所有可能的情况下,应首选单引号来分隔字符串。唯一的例外是显示特殊字符,如换行符。
//correct
echo 'Hello world, nice to meet you'."\n";
数组
具有少量索引的数组可以使用内联格式声明(注意空格)。
$arr = [1, 2, 3, 4];
对于不适合一行(80个字符)的大型数组,必须使用多行格式。
$arr = [
'First' => 1,
'Second' => 2,
'Third' => 3,
'Fourth' => 'Hello',
'Fifth' => 'World'
];
特殊运算符
如果您发现了以下示例中关于未转义的变量输出的安全影响,那么做得很好,给自己一个大大的掌声!
对于非复杂语句,可以使用三元运算符格式(注意空格)。
<?= isset($variable_name) ? $variable_name : 'Default value'; ?>
为了提高可读性,可以使用空合并运算符来提供一个默认值,如果变量不存在。
<?= $variable_name ?? 'This variable is null'; ?>
类似地,可以使用Elvis运算符来提供一个默认值,如果变量不是真值。
<?= $variable_name ?: 'This variable is not truthy (ie. null/0/false)'; ?>
数据库
所有数据库表必须使用标题大小写命名,并且是单数形式(以匹配模型名称)。
Event
EventCategory
所有数据库列必须使用下划线命名法命名。
event_id
name
代码编辑器
Atom
您可以在每次保存PHP文件时安装Atom Beautify包,并将其配置为使用Spindogs编码标准。https://github.com/Glavin001/atom-beautify
-
将最新的
php-cs-fixer.phar
下载到本地机器上的PHP目录中。https://github.com/FriendsOfPHP/PHP-CS-Fixer#installation -
将此GIT仓库克隆到本地机器上的某个位置。https://github.com/spindogs/phpcs
-
从设置屏幕安装
atom-beautify
包。 -
配置
php-cs-fixer.phar
可执行文件的路径。 -
配置Spindogs的
.php_cs.dist
文件路径。 -
启用在保存时美化PHP文件。