跳转到内容

Phalcon 编码标准


最后更新:2019-07-04

Phalcon 使用Zephir一种 Phalcon 团队发明并积极开发的语言编写的。因此,没有既定的编码标准供开发人员遵循。

在本文档中,我们概述了 Phalcon 用于编辑 Zephir 文件的编码标准。该编码标准是PSR-12的变体,由PHP-FIG

文件

  • 文件只能使用不带 BOM 的 UTF-8。
  • 文件名必须使用 StudlyCaps 命名法。
  • 所有文件必须使用 Unix LF(换行符)作为行尾。
  • 所有文件必须以一个空行结束。
  • 文件夹也使用 StudlyCaps 命名,并且文件夹/子文件夹树遵循类的命名空间。
phalcon/Acl/Adapter/Memory.zep
namespace Phalcon\Acl\Adapter;

use Phalcon\Acl\Adapter;

class Memory extends Adapter
{

}
  • 代码必须使用 4 个空格进行缩进,而不是制表符。
  • 行长度应为 80 个字符或更少。行长度的硬性限制是 120 个字符。
  • 命名空间声明后必须有一个空行,use 声明块后也必须有一个空行。
  • 非空白行末尾不得有多余的空格。
  • 可以添加空白行以提高可读性和表示相关的代码块。
  • 每行不得包含多个语句。

  • 类名必须使用 StudlyCaps 声明。
  • 类的开括号必须放在下一行,闭括号必须在主体后下一行。
  • 抽象类必须以前缀Abstract
  • 接口必须以后缀Interface

常量

  • 类常量必须全部大写,并用下划线分隔。
  • 类常量必须出现在类的顶部。
  • 类常量必须按常量名称的字母顺序排序。
namespace Phalcon\Acl;

class Enum
{
    const ALLOW = 1;
    const DENY  = 0;
}

属性

  • 类属性必须用 camelCase 声明。
  • 类属性必须按名称的字母顺序排序。
  • 如果可能,属性必须有一个默认值。
  • 如果可能,属性必须有一个 docblock 来定义它们的类型@var声明。
  • 属性前面不得加下划线_。唯一的例外是如果属性名是一个保留关键字,例如default, namespace等等。
namespace Phalcon\Acl\Adapter;

use Phalcon\Acl\Adapter;

class Memory extends Adapter
{
    /**
     * @var string | null
     */
    protected activeKey = "" { get };
}

方法

  • 方法名必须用 camelCase 声明。
  • 方法必须按字母顺序和可见性进行排序。顺序是public, protectedprivate. __construct如果已定义,则必须位于类的顶部,以及其他任何 PHP 魔术方法(也按字母顺序排列)。
  • 方法名前面不得加下划线_.
  • 所有方法都必须有一个返回类型。如果方法不返回任何内容,应标记为void
  • 方法的开括号必须放在下一行,闭括号必须在主体后下一行。
  • 必须声明所有属性和方法的可见性;abstractfinal必须在可见性之前声明;static必须在可见性之后声明。
abstract public function getElement() -> var;

final public function getElement() -> var;

public static function getElement() -> var;
  • 控制结构关键字后面必须有一个空格;方法和函数调用后面则不能有。
  • 控制结构的开括号必须在同一行,闭括号必须在主体后下一行。
  • 控制结构如if条件表达式周围不得有括号,除非它是一个复杂的条件。
if typeof variable === "array" {

}

方法参数

  • 在参数列表中,逗号前不得有空格,逗号后必须有一个空格。
  • 每个方法在定义前必须声明其类型
  • 具有默认值的方法参数必须位于参数列表的末尾。
public function setElement(string! name, var value) -> void;
  • 参数列表可以跨多行拆分,其中每个后续行缩进一次。这样做时,列表中的第一项必须在下一行,并且每行只能有一个参数。

PHP 文件

测试之类的 PHP 文件必须遵守PSR-12.