spindogs/phpcs

此包最新版本(dev-master)没有可用的许可信息。

Spindogs编码标准

dev-master 2019-09-19 12:07 UTC

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关键字必须全部小写(例如:ifwhilefor等)。
  • PHP常量truefalsenull必须全部小写。

命名

PSR-1标准对代码的命名没有做出任何建议,只是指出必须使用一致的风格。因此,Spindogs更喜欢以下命名风格

  • 常量必须声明为全大写(使用下划线分隔)。
  • 类名必须声明为标题大小写。
  • 方法名必须声明为驼峰大小写。
  • 属性名必须声明为蛇形大小写。
  • 变量必须声明为蛇形大小写。

全局函数

应尽可能避免使用全局函数,而是将辅助函数封装在类中。

所有属性必须声明可见性(publicprotectedprivate)。

<?php
namespace Vendor\Package;

class ClassName
{
    public $foo = null;
}

方法

  • 所有方法必须声明可见性(publicprotectedprivate)。
  • 悬挂括号 - 开括号必须单独一行。
  • 如果存在,静态声明必须位于可见性之后。

示例

/**
 * @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

  1. 将最新的php-cs-fixer.phar下载到本地机器上的PHP目录中。https://github.com/FriendsOfPHP/PHP-CS-Fixer#installation

  2. 将此GIT仓库克隆到本地机器上的某个位置。https://github.com/spindogs/phpcs

  3. 从设置屏幕安装atom-beautify包。

  4. 配置php-cs-fixer.phar可执行文件的路径。

  5. 配置Spindogs的.php_cs.dist文件路径。

  6. 启用在保存时美化PHP文件。