Yii 编码规范简记 (他山之石)
作者:Jeen 发布于:2013-6-8 9:40 Saturday 分类:叽叽歪歪
1 概括¶
- 文件必须只使用
- PHP文件必面只全名用UTF-8编辑,无BOM头。
- 代码使用tab做为缩进,不使用空格
- 类名定义必需使用 驼峰式大小写 http://baike.baidu.com/view/2359058.htm
- 类常量定义必须使用会大写,多个单词使用下划线分开.
- 自定义类方法必须使用 驼峰拼写法 http://baike.baidu.com/view/2140462.htm
- controllerID, moduleId, actionId 需要使用 驼峰拼写法 http://baike.baidu.com/view/2140462.htm
- 除对ORACLE的模型外,类属性必须使用 驼峰拼写法 http://baike.baidu.com/view/2140462.htm
- 私有属性必须以下划线开头
- 使用elseif 而不使用else if
2 文件¶
- PHP标签
- 文件必须只使用
- 在只有php代码的文件中,应该不包含 ?>
- 不要在最后一行点空格
- 所有包含php代码的文件,都要以.php做为扩展名。
- 字符编码
PHP文件必面只全名用UTF-8编辑,无BOM头。
3 类名¶
类名定义必需使用 驼峰式大小写 http://baike.baidu.com/view/2359058.htm
例如:Controller, Model
4 类¶
这里的类,包含类及接口。
- 类的名字应该使用驼峰式大小写
- 大括号,应该写下类名的下一行
- 每个类都应该有一些注解
- 每个类的应该有同一的缩进格式
- 一个文件,应该仅包含一个类
- 类的名字应该与类的文件命匹配。
/** * Documentation */ class MyClass extends Object implements MyInterface { // code }
4.1 常量¶
类常量定义必须使用会大写,多个单词使用下划线分开.
<?php class Foo { const VERSION = '1.0'; const DATE_APPROVED = '2012-06-01'; }
4.2 属性¶
- 公有属性,应该明确指定public关键词
- 变量应该定义在所有方法之前
- 私有变量应该类似于 $_varName;
- 类成量变量及普通变量,能应该使用驼峰拼写法
- 尽量使用具有描述性的变理名,不要使用$i 或 $j
如下:
<?php class Foo { public $publicProp; protected $protectedProp; private $_privateProp; }
4.3 方法¶
- 函数及类方法,应该使用驼峰拼写法
- 函数及方法名称应具有功能的描述性
- 类方法应该使用private , protected和public修饰符声明。
- 大括号需要另起一行
/** * Documentation */ class Foo { /** * Documentation */ public function bar() { // code return $value; } }
明确类型传递,应明确类型
public function __construct(CDbConnection $connection) { $this->connection = $connection; }
4.4 文档块¶
@param, @var, @property and @return 应该定义类型 如 boolean, integer, string, array or null。Model 或 ActiveRecord也可以使用类名. 类型数组如ClassName[].
4.5 构造函数¶
- 使用__construct做为构造函数
- 初始化类的实例时,应该使用new MyClass(); 而不是 new MyClass;.
5 PHP¶
5.1 类型¶
所有PHP内置类型或值使用全小所,如:true, false, null和array。
关联数组,如下:
$config = array( 'name' => 'Yii', 'options' => array( 'usePHP' => true, ), );
5.2 字符串¶
如果字符串不包含变量,请使用单引号
$str = 'Like this.';
如果字符串包含单引号,应该使用双引号,避免转义
变量内插¶
$str1 = "Hello $username!"; $str2 = "Hello {$username}!";
下面是不允许的
$str3 = "Hello ${username}!";
连接¶
连接字符串,使用.进行连接
$name = 'Yii' . ' Framework';
当字符串过长或过多,使用如下格式:
$sql = "SELECT *" . "FROM `post` " . "WHERE `id` = 121 ";
5.3 数组¶
数字索引¶
不要使用负数的索引下标
使用如下方式定义:
$arr = array(3, 14, 15, 'Yii', 'Framework');
如果元素太多,可分行定义
$arr = array( 3, 14, 15, 92, 6, $test, 'Yii', 'Framework', );
关系数组¶
关联数组定义如下:
$config = array( 'name' => 'Yii', 'options' => array( 'usePHP' => true, ), );
5.4 控制语句¶
- 控制语句的条件必须与大括号之间有一个空格
- 条件中的各个部分以一个空格分开
- 开大括号与条件在同一行
- 结尾大括号另起一行
if ($event === null) { return new Event(); } elseif ($event instanceof CoolEvent) { return $event->instance(); } else { return null; } // 下面是不允许的 if(!$model) throw new Exception('test');
switch¶
switch格式如下:
switch ($this->phpType) { case 'string': $a = (string)$value; break; case 'integer': case 'int': $a = (integer)$value; break; case 'boolean': $a = (boolean)$value; break; default: $a = null; }
5.5 函数调用¶
doIt(2, 3); doIt(array( 'a' => 'b', )); doIt('a', array( 'a' => 'b', ));
文档¶
- 参考phpDoc的文档语法
- 不允许代码没有文档
- 所有类必须包含类级别的文档和方法的文档
- 如果方法没有返回值,不需要使用@return
类¶
/** * 类的功能描述 * * @author yangsong */ class Component extends Object h2. 函数/方法 <pre> /** * 功能描述 * 用法 * * ~~~ * $component->getEventHandlers($eventName)->insertAt(0, $eventHandler); * ~~~ * * @param string $name 事件名称 * @return Vector列表 * @throws Exception 如果event未定义 */ public function getEventHandlers($name) { if (!isset($this->_e[$name])) { $this->_e[$name] = new Vector; } $this->ensureBehaviors(); return $this->_e[$name]; } </pre> h2. 注释 单行注释应该以 // 开始,不要使用#
标签: Yii
« HTML特殊字符收集
|
Yii用户手册数据库操作篇»
发表评论: