我的规范 - PHP规范 ¶
命名 ¶
变量,全局函数,以及类的公共方法都用小写驼峰分词。
//错的 $user_name = '小红'; $UserName = '小红'; $Add_Time = 111; //对的 $userName = '小红'; $addTime = 111; //错的 function GetName(){} public function GetXXX(){} //对的 function getName(){} public function getUserInfo(){}
类的私有属性,方法都在命名前加下划线。
//错的 private $name; private $parseName(){} protected $parseUrl(){} //对的 private $_name; private $_parseName(){} protected $_parseUrl(){}
在模板里计算产生的变量和函数也要加下划线开头命名,以防误代码量大时阅读起来以为是注册进来的变量。
常量全大写下划线分词
define('ADMIN_EMAIL', 'xxx@umelook.com') class User{ const MAX_AGE = 200; //类常量也是全大写下划线分词 }
数组下标小写下划线分词
这里注意的是,由客户端发起
GET/POST
请求提交的参数命名用小写陀峰命名
,所以$_POST
和$_GET
两个全局数组的下标是陀峰的。$aData = [ 'user_name' => 'xxx', 'add_time' => 123, ]; $_POST = [ 'userName' => 'xxx', 'addTime' => 123, ];
类名用大写开头的陀峰
class User{} //一个词 class CookieCollection{} //二个词
类的文件名前缀和类名一致
User类就是User.php
Login类就是Login.php
url上的get参数前面的片段全部要小写中划线分词,而GET参数的命名则是小写陀峰命名。
http://xxx.com/path/userInfo.html?user_id=1&pageSize=10
错误http://xxx.com/path/user-info.html?userId=1&pageSize=10
正确
使用原则 ¶
表示 是/否 逻辑的变量用true/false
//错误的: $isBoy = 1; if($user['sex'] == User::SEX_GIRL){ $isBoy = 0; } //正确的: $isBoy = true; if($aUser['sex'] == User::SEX_GIRL){ $isBoy = false; }
接收前端表示是/否的0/1时要转换成true/false
$isSave = Yii::$app->request->post('isSave') ? true : false; //或者 $isSave = (bool)Yii::$app->request->post('isSave');
非特殊情况下不允许使用全局变量
$GLOBALS
用于保存数组内容的变量初始化时如果要设置默认值则用
[ ]
禁止将变量放在双引号的字符串里面,像这样
"姓名:$sName"
是不允许的。如果字符串里面带有单引号则可以变通一下,使用
'What\'s your name'
或者"What's your name"
都行。
备注 ¶
基本上使用phpdoc
备注格式书写备注,如果在Yii2框架中,则增加以下备注规范:
说明一个常量是事件名称
当一个类有
const EVENT_BEFORE_LOGIN = 'before_login'
的常量时,如果这个常量用在这样的代码中:$class->on(MyClass::EVENT_BEFORE_LOGIN, function(){...});
说明这个常量就是一个事件标识,则这个常量需要基于phpdoc规范来扩展描述它的作用,配合定义的位置这样写备注:
/** * @event 这里是事件的介绍,比如 登陆前的事件 */ const EVENT_BEFORE_LOGIN = 'before_login';
说明明一个函数/方法的作者时,
@author
可以不输入邮箱,直接写姓名标记即可。/** * 退出登陆 * @author 小明 */ public function logout(){ }
说明一个方法有没有编写单元测试时,增加
@test
来标注,值是单元测试用例的类名(带命名空间)和方法。/** * 退出登陆 * @author 小明 * @test \tests\UserTestSuite::testLogout */ public function logout(){ }