陈国冰的一些笔记
开始
PHP 的通用规范
if 后面即使是一行,也要加 {}
不要用 if(): endif; 方式,而是用 if(){}
大段注释不用 /**/ 而是用
/*
//*/
不要用 ==== >>>> <<<< 作为注释
////[[[[
//良好注释
////]]]]
批量查找替换的注释,// 放在最前面
用 Tab 而不是空格缩进
大数据数组使用和 var_export 的格式
[del]用 LF换行而不是 CRLF换行[/del]
if($flag){
$ret='a';
}else{
$ret=;
}
$ret=;
if($flag){
$ret='done';
}
返回给 foreach 用的空值,请用 array();
变量记得初始化
技巧
$ret=;
$ret=($flag==1)?'A':$ret;
$ret=($flag==2)?'B':$ret;
$ret=($flag==3)?'C':$ret;
foreach($array as $k => &$v){
}
统一使用 mysql 相关编码函数
$this->db->escape()
$this->db->escape_str()
View 的规范
主页面 [ View_的规范]
controller 规范
controller 的结尾不加 ?> 避免 后面换行或空格输出
controller 不能直接调用 sql 。
要调用 sql ,请在 model 里写。
如果怕冲突,暂时写在 controller里,请写在单独 protected 方法
对外方法,load_model在 方法的最前端,
GET,POST 数据处理放在最前面。
业务逻辑放中间
最后是 view 处理。
点滴
js 脚本和 php 传输给 js 的变量分开
正确
<script>var x=<?=json_encode($x)?></script>
<script>alert(x)</script>
错误
<script>
alert(<?=$x?>)
</script>
controller 里不要做 sql 语句
正确 把 sql 语句都放到 model里。
利用好 sql_calc_found_rows()
error_reporting ( error_reporting() | E_NOTICE );
<?php
$app=new EventApp();
FMBEvent::Bind('Log',array(&$app,'log_it'));
//foo(){
FMBEvent::Fire('log');
//}
半截 sql 问题