mysql数据库里的字段名用下划线,PHP变量用驼峰合适么?

我知道很多人对这种细节不以为然,之前网上搜过一堆这类问题,答案通常是你高兴就好。但是团队合作中,这类问题导致的BUG确实不少。
PSR-1相关规范是这么说的:

类的属性命名可以遵循 大写开头的驼峰式 ($StudlyCaps)、小写开头的驼峰式 ($camelCase) 又或者是 下划线分隔式 ($under_score),本规范不做强制要求,但无论遵循哪种命名方式,都应该在一定的范围内保持一致。这个范围可以是整个团队、整个包、整个类或整个方法。

可大家的想法不一致,真的很难强行要求别人按自己的想法去写。
比如mysql字段中是user_name,那么PHP中写成$userName是否合适?网页间GET方式传递参数呢?有哪个规范有这方面的规定没?
如果php中已有字段的变量与MYSQL统一写成$user_name,那么没有字段的变量如何处理?比如根据身份证号推算出该用户是青年人,应该写成$is_young还是$isYoung合适呢?
比如下段这几段代码,你赞成哪一组呢?

第一种:属性和传参一律采用驼峰

$userName=$_GET['userName']?$_GET['userName']:'';
if($isYoung){
  $data=['user_name'=>$userName];
  $db->insert($data,$table);
}

第二种:属性采用驼峰,传参与mysql一致

$userName=$_GET['user_name']?$_GET['user_name']:'';
if($isYoung){
  $data=['user_name'=>$userName];
  $db->insert($data,$table);
}

第三种:干脆全部属性都采用下划线算了

$user_name=$_GET['user_name']?$_GET['user_name']:'';
if($is_young){
  $data=['user_name'=>$user_name];
  $db->insert($data,$table);
}

第四种:数据库有对应字段的就用下划线,没有的就用驼峰

$user_name=$_GET['user_name']?$_GET['user_name']:'';
if($isYoung){
  $data=['user_name'=>$user_name];
  $db->insert($data,$table);
}

请问大家日常用的是哪种呢?

阅读 10.5k
13 个回答

PSR 这玩意 他只是个参考。
那么什么才是标准,这个肯定没有定论。
相对的就是取决于你们的团队是怎么写的,合理且大家易接受的,即可,团队至上,而不是标准至上。

一个团队的代码风格用个文档来约束下。我通常是用第三种,全部一样,不易出错

在没有约束的情况下,个人是比较习惯用第三种

不喜欢驼峰~~,下划线万能

我也纠结这个问题很久,之前一直看一些大厂的接口参数和返回值,基本都是用的 下划线。

倾向于第三种 看着舒服 也不易出错

用第二种,毕竟遵守社区的规范可以更好地促进社区的发展。你也不想 php 处于鄙视链的最底端,对吧?

一般用的第二种和第三种比较多。好多框架都用第二种。

相对来说,我推荐第三种,因为第三种省去了很多不必要的思考,所有数据保持统一,能减少无意义的思考,加快编码速度。这才是最重要的,同时也避免了规范不同造成的bug。

妥妥的第三种,不过我是变量/属性使用下划线,function 使用驼峰

变量名全部用驼峰法,不分任何场合, 不管mysql字段是怎么命名的。

只要可读性高,内部统一就OK了

当然驼峰了,框架可以把数据库字段和驼峰互相转换

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏