index0h / code-style
index0h代码标准,基于PSR-2。
dev-master
2014-09-09 11:39 UTC
Requires
- php: >=5.3.3
- squizlabs/php_codesniffer: 1.*
This package is not auto-updated.
Last update: 2024-09-14 14:47:22 UTC
README
什么是CodeStyle?
CodeStyle是基于PHP_CodeSniffer的代码验证器集合。它与PSR-2完全兼容。
安装和执行。
通过Composer。
在require或require-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之后的新行开始。
- 文件注释必须包含简要描述,后面跟一个空行。
- 文件注释必须包含以下顺序的标签:category,package,subpackage,author,copyright,license,link。
- 注释中的标签值应对齐。
- 注释中的空行在除了在短注释和长注释之后之外,是禁止的。
- 文件注释的前缀必须是:[空格]*[空格]。
<?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(); ...
- 禁止使用eval和ob_end_flush函数。
- 禁止使用状态为forbidden或deprecated的函数。
- 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); }