5.5.2. CI约定的风格与语法¶
文件格式为UTF-8
php结束标签(php文件前
<?php
后?>
都不能有任何东西):默认结束标签是
?>
,但如果后面再写东西, 不管是注释还是什么都会显示在页面上,所以一般使用:/* End of file myfile.php */ /* Location: ./system/modules/mymodule/myfile.php */
类的命名:
类以大写字母开头, 其余字母都是小写
多个单词之间用
_
分开不许使用
CamelCase
命名方法避免使用过长的名字
要起有意义的名字
函数与变量的命名:
和类命名相似,只是它们的全部字母都是小写
短名字(如,i, j…)只用于在for循环中做迭代器
举例:
function get_file_properties() // descriptive, underscore separator, and all lowercase letters
常量的命名:
除了字母必须全部用大小写外其余一变量一样
注释(以下只是几个推荐格式):
/** * Super Class * * @package Package Name * @subpackage Subpackage * @category Category * @author Author Name * @link http://example.com */ class Super_class { /** * Encodes string for use in XML * * @access public * @param string * @return string */ function xml_encode($str)
TRUE,FALSE和NULL
必须全部是大写
逻辑操作:
if ($foo OR $bar) // not: if ($foo || $bar) if ($foo && $bar) // not: if ($foo AND $bar) if ( ! $foo) // not: if (!$foo) 记得要加空格 if ( ! is_array($foo)) //if (! is_array($foo)) 要加空格,“!号”前后都要加空格
返回值与类型转换:
函数在错误的时候一般夫返回“”或0
如果使用
== !=
而不是=== !===
时,会出现各种问题类型转换时要注意:当把一个变量转化为字符串时:
NULL或二进制的FALSE会被转化为空字符串
0或其他数字会被转化为数据字符串,如
(string)1-->"1"
TRUE被转化为
"1"
在提交的代码中不能有调试信息
一个文件一个类
使用unix换行来保存文件
代码缩进(使用Allman类型缩进),除类的声明外, 其余大括号都是独占一行,即:
function foo($bar) { // ... } foreach ($arr as $key => $val) { // ... }
方括号与圆括号内的空格符,通常情况下,不要在方括号”[]”和圆括号”()”内增加任何空格符.唯一的例外就是为了提高可读性和区别开它们与函数,在接受参数的PHP语法控制结构所使用的括号里,需要增加空格符(declare, do-while, elseif, for, foreach, if, switch, while):
不恰当的: $arr[ $foo ] = 'foo'; 正确的: $arr[$foo] = 'foo'; // 数组键值的方括号内没有空格 不恰当的: function foo ( $bar ) { } 正确的: function foo($bar) // 函数声明的圆括号内没有空格 { } 不恰当的: foreach( $query->result() as $row ) // PHP语法控制结构之后有空格,但不是在圆括号内 正确的: foreach ($query->result() as $row)
本地化文本,所有在control panel输出的文本都应该使用 lang 文件里的语言变量来允许本地化:
INCORRECT: return "Invalid Selection"; CORRECT: return $this->lang->line('invalid_selection');
如果方法和变量只在类的内部使用,应当使用下划线作为前缀:
convert_text() // public method _convert_text() // private method
使用一个不确定是否存在的变量时,先使用命令
isset()
每行一条语句
字符串:
尽量使用单绰号
当需要解析变量时,使用双绰号,注意变量要加
{}
"My string {$foo}"
当字符串中有单引号时:
"SELECT foo FROM bar WHERE baz = 'bag'"
SQL查询:
SQL关键词总是大写
为了可读性,将从句句分成多行来写:
$query = $this->db->query("SELECT foo, bar, baz, foofoo, foobar AS raboof, foobaz FROM exp_pre_email_addresses WHERE foo != 'oof' AND baz != 'zab' ORDER BY foobaz LIMIT 5, 100");