PHP/MySQL命名约定:camelCase与under_分数?

PHP/MySQL命名约定:camelCase与under_分数?,php,mysql,naming-conventions,Php,Mysql,Naming Conventions,在PHP模型代码中(至少在我自己的代码中)经常直接引用MySQL表名和字段名,而且由于MySQL标识符大部分不区分大小写,我通常使用under_score命名约定使这些标识符更具可读性 然而,与此同时,似乎大多数人在创建PHP类库时使用camelCase约定,我也一直在尝试这样做 除此之外,PHP内置函数本身也不一致。其中一些使用camelCase,另一些使用under_scores,还有一些使用C风格命名(例如“strtolower”) 结果是代码的可读性往往比我喜欢的要差得多,混合camel

在PHP模型代码中(至少在我自己的代码中)经常直接引用MySQL表名和字段名,而且由于MySQL标识符大部分不区分大小写,我通常使用under_score命名约定使这些标识符更具可读性

然而,与此同时,似乎大多数人在创建PHP类库时使用camelCase约定,我也一直在尝试这样做

除此之外,PHP内置函数本身也不一致。其中一些使用camelCase,另一些使用under_scores,还有一些使用C风格命名(例如“strtolower”)

结果是代码的可读性往往比我喜欢的要差得多,混合camelCase、under_score和C风格的命名约定在代码中显示得非常接近


其他人是怎么处理的?也许人们已经找到了某种方法来组织他们的工作,这样不同的命名约定就不会显得太接近了?或者可能有类库,如果使用得当,会使事情变得更干净?我知道这些关于风格的讨论可能会变得激烈——不必去那里,只需要一些实用的建议就行了

正如teresko所说,MySQL名称在*NIX平台上区分大小写,在Windows上不区分大小写。如果您开发的代码同时支持这两种情况(正如我所做的),那么混合使用您的案例可能会带来巨大的麻烦:例如,在Windows上转储数据库并将其还原到*NIX上,您所有的案例都会丢失。事实上,正是因为这个原因,我们不得不在转储中大量使用代码来检测和修复案例


如果你没有Windows,尽管你使用什么并不重要,只要你保持一致

对于模型和数据库表,您可以使用:

  • 对于模型名称
  • 数据库表模型名称的复数形式(小写/大写一致,如“camelcase”)
  • 表名按字母顺序排列,用下划线分隔(例如,“camels_cases”是“cases”和“camels”之间的连接表)
对于类,我通常使用camelcase(从大写开始)和camelcase作为方法(从小写开始)


但事实上,重要的是一致性和可读性。遵循一些众所周知且广泛实施的框架的命名约定可能是一个好主意,例如Zend Framework(就编码标准而言,这一个提供了非常精确的指导方针),但例如Kohana也可能是一个好主意。重新发明轮子可能不是最好的主意;)

似乎这个问题的大多数答案归结为“一致”——但没有解决如何处理出现在同一代码模块中的各种上下文中的标识符的问题。就我个人而言,将它们分开并没有真正的问题。在设计MySQL数据库时,我只使用小写。PHP/CI中的主要控制器/模型函数名为camelCase。我尽我所能不让下划线出现在我的代码中,但是像tank_auth这样的插件确实使用了下划线。我想这就是PHP灵活性的乐趣(也是缺点)。@Kyle在这里也一样。其实很有趣。SQL从不使用大小写和大量的
。PHP从来没有
\uuu
和许多骆驼。我认为这实际上非常清楚:你可以看到这样的起源:PHP或SQL是否创建了这个varname?下划线通常用于_constructor-type函数(例如_createuserin tank_auth)来表示它们的函数,但是我非常喜欢camelCase,只需花几分钟思考函数的名称。在我看来,每天都要用简单、可重复的英语对基于语法的描述符进行良好的描述。