php – 使用常量定义表和列名称
使用常量定义所有表名和列名然后在查询字符串中使用它们是一种很好的编码风格吗?
我这样做,因为每当我在数据库中更改某些内容时,我只需更改常量而不是更改所有内容. 例如,这是我在单独文件中的数据库定义: define("DB_TBL_USER","user"); define("DB_USER__PK_USER_ID","pk_user_id"); define("DB_USER__PASSWORD","password"); define("DB_USER__EMAIL","email"); define("DB_USER__FIRST_NAME","first_name"); define("DB_USER__LAST_NAME","last_name"); define("DB_USER__GENDER","gender"); 在我的数据库类中我构建了这样的查询(在register_user()方法中!): $queries[]="INSERT INTO ". constant('DB_TBL_USER'). " ( ". constant('DB_USER__PASSWORD').",". constant('DB_USER__EMAIL').",". constant('DB_USER__FIRST_NAME').",". constant('DB_USER__LAST_NAME').",". constant('DB_USER__GENDER').") ". "VALUES ("." $password,$email,$first_name,$last_name,$gender "; 然后将其他查询放在queries []数组中并使用循环执行它们. 有没有更简单,更有效的方法呢? 解决方法
实际上,通常不会重命名列.添加或删除它们更为常见,为此您的常量将无济于事.
列更改的主要原因是,当其含义发生更改时,例如,当您要存储首字母而不是名字时,可以将列first_name重命名为首字母. 但是,如果你有一个常量,你仍然需要重命名常量,否则你会有一个无意义和混乱的常量名称. 它可能仍然更容易,因为在代码中可以比first_name更容易找到DB_USER__FIRST_NAME(这可能会导致变量名称的误报等). 无论如何:如果你这样做,我会使用常量而不是名称DB_TBL_USER而不是常量(‘DB_TBL_USER’).如果您这样做,您的代码将更加精简,您可以从IDE中的代码完成功能中受益. 如果不这样做,并且在非常罕见的情况下需要重命名first_name,您仍然可以搜索整个代码并检查每个匹配是否需要更改.即使在非常大的项目中,这也是可以管理的. 或者,您可以考虑将表名添加为列名的前缀,因此将列命名为user_first_name而不是first_name.不是我会选择的路径,但它有时会完成(例如,MediaWiki使用此模式). 如果使用ORM和/或命令模式,则可以在少数几个小类中包装对表的访问,从而使更改列名变得微不足道.如果您有适当的IDE,则可以通过重构工具重命名映射到列的属性,否则应用上述相同的搜索/替换注释. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |