index0h/code-style

index0h代码标准,基于PSR-2。

dev-master 2014-09-09 11:39 UTC

This package is not auto-updated.

Last update: 2024-09-14 14:47:22 UTC


README

什么是CodeStyle?

CodeStyle是基于PHP_CodeSniffer的代码验证器集合。它与PSR-2完全兼容。

安装和执行。

通过Composer

requirerequire-dev标签中添加以下内容。

{
    "require": {
        "index0h/CodeStyle": "dev-master"
    }
}

如果包被添加到require-dev中,则需要使用--dev标签应用更新。

composer.phar update

执行项目检查。

vendor/bin/CodeStyle.sh

通过git,或下载存档

这种情况假设PHP_CodeSniffer独立安装。

git clone https://github.com/index0h/CodeStyle.git

执行。

phpcs --standard="/path/to/CodeStyle/CodeStyle" /path/to/my/project/

描述CodeStyle与PSR-2的差异。

文件。

  • 一个文件中只能有一个一个类,或者只能有一个一个接口。
  • 文件必须包含标题中的注释,格式为phpdoc
  • 在文件注释之后必须有换行符
  • 文件注释必须从<?php之后的新行开始。
  • 文件注释必须包含简要描述,后面跟一个空行
  • 文件注释必须包含以下顺序的标签:categorypackagesubpackageauthorcopyrightlicenselink
  • 注释中的标签值应对齐
  • 注释中的空行在除了在短注释和长注释之后之外,是禁止的
  • 文件注释的前缀必须是:[空格]*[空格]
<?php
/**
 * HashValidator.php.
 *
 * @category   Helper
 * @package    YiiHelper
 * @subpackage Validators
 * @author     Roman Levishchenko <index.0h@gmail.com>
 * @copyright  2013 Roman Levishchenko <index.0h@gmail.com>
 * @license    BSD-3-Clause https://github.com/index0h/yii-helper/blob/master/LICENSE
 * @version    0.0.1
 * @link       https://github.com/index0h/yii-helper/blob/master/ib/validators/HashValidator.php
 */
  • 文件必须以一个空行结束。
  • 行长度不得超过120个字符。
  • namespace之后必须有一个换行符

总体。

  • 数学、逻辑、字符串和赋值应该用一个空格分开。
// НЕ ПРАВИЛЬНО.
$a=1+2+3+4;

// ПРАВИЛЬНО.
$a = 1 + 2 + 3 + 4;
  • 如果更合适,则禁止使用for循环。
// НЕ ПРАВИЛЬНО.
for (;;) {
  • 禁止使用空指令。
// НЕ ПРАВИЛЬНО.
if ($someVar === false) {
}
  • 禁止使用无条件的条件。
// НЕ ПРАВИЛЬНО.
if (false) {
  • 禁止在不必要的情况下使用双引号
// НЕ ПРАВИЛЬНО.
$a = "some text";

// ПРАВИЛЬНО.
$a = 'some text';
$a = "some text {$here}";
  • 禁止使用echo作为函数。
// НЕ ПРАВИЛЬНО.
echo("some text");

// ПРАВИЛЬНО.
echo 'some text';
  • 禁止使用"@"来隐藏错误。
// НЕ ПРАВИЛЬНО.
@someFunc();

// ПРАВИЛЬНО.
try {
    someFunc();
...
  • 禁止使用evalob_end_flush函数。
  • 禁止使用状态为forbiddendeprecated的函数。
  • catch语句必须包含注释。
  • 禁止使用heredoc语法:<<<END
  • 禁止在循环中使用size函数。
  • 禁止在一行上执行多个操作。
  • 禁止在不必要的情况下使用连接。
// НЕ ПРАВИЛЬНО.
$a = 'some' . ' text ' . 'here';

// ПРАВИЛЬНО.
$a = 'some text here';
  • 禁止使用类似$a = $a + 1;的表达式。
  • 禁止对未初始化的对象进行赋值。

类。

  • 类必须包含一个符合 phpdoc 格式的注释。
  • 类注释中只允许有 简短详细 描述。
  • 类注释中必须有 简短 描述。
  • 禁止使用 C++ 风格来命名构造函数和析构函数。
// НЕ ПРАВИЛЬНО.
public function MyClassName()
{

// ПРАВИЛЬНО.
public function __construct()
{

方法。

  • 全局函数 禁止 使用。
  • 禁止有 死代码 的方法。
public function myDeadCode()
{
    $a = 1;
    return true;
    // Мертвый код.
    $a = 2;
}
  • 禁止在静态方法中使用 $this。
  • 禁止在调用方法时通过引用传递变量。
// НЕ ПРАВИЛЬНО.
public function myFunc($a)
{
...
$myObj->myFunc(&$a);

// ПРАВИЛЬНО.
public function myFunc(&$a)
{
...
$myObj->myFunc($a);
  • 禁止有未使用参数的方法。
  • 禁止仅执行父类方法的函数重写。
// НЕ ПРАВИЛЬНО.
public function __construct($a, $b) {
    parent::__construct($a, $b);
}