gpt4 book ai didi

php - 统一命名方案问题: SQL column names and PHP array keys casing schemes conflict

转载 作者:行者123 更新时间:2023-11-29 13:01:21 27 4
gpt4 key购买 nike

在我休息期间,我已经为这个问题绞尽脑汁好几天了。我还没有真正接近实际的解决方案,所以决定在这里发布。我确实找到了这个帖子: PHP/MySQL naming conventions: camelCase vs under_score?但尽管答案提供了相当多的信息,但并没有提供前进的方向。如果重新发布类似的问题是不礼貌的,请原谅我,并理解这个问题是专门关于数组索引的。

所以我试图设计一个跨 PHP、SQL 和 JS 的相当好的统一命名/大小写方案,供开发团队遵循,以便我们都能幸福地生活在一起。对于尚未原生命名的事物,面向对象的 PHP 通常是使用驼峰式命名法和帕斯卡式命名法混合编写的。所以我正在考虑使 PHP 中的所有内容都使用驼峰命名法和帕斯卡命名法成为规范(这不是天真的命名)。这将包括类、对象、方法、变量名称,以及最值得注意的是关联数组键名称。然而,我发现自己面临着这样的问题:SQL 列名称通常(并且据我所知,出于良好的技术原因)使用 Snake_case 命名。

现在,当我们获取记录集时会发生什么?

$records = DB::fetchAll('SELECT * FROM reco_user');
echo $records[0]['user_name'];
echo $records[0]['date_registered'];

众所周知的竞争环境是锯齿状且随机的!我们有 Snake_cased 数组键,但不符合我们的 CamelCase 数组键方案。

我曾考虑过调整我的方案,使用camelCase作为变量名称,使用snake_case作为键,但我更希望它们不互相反对,因为有时变量名称和索引名称用于相互通知。

我正在考虑创建一个函数来将所有数组键转换为驼峰命名法。然而,我担心这可能被认为是“矫枉过正”,并且其他开发人员不会总是使用它。我还担心这会减慢网站速度(特别是对于大型查询),因为每个查询都会有这个额外的数组键转换操作。

这有点痛苦,因为我认为驼峰命名法对于 PHP 中的其他所有内容、JS 中的所有内容以及 CSS 中的所有内容都非常有用。正是返回 SQL 记录的这一方面导致该方案到目前为止还不够接近。

请告诉我你的想法。非常感谢。

最佳答案

为什么 SQL 列名采用蛇形命名而其他数组键采用驼峰命名很重要?因为他们看起来不一样?它们用自己的约定代表不同类型的对象,这些差异应该可以帮助您检测 code smells 。所以当我遇到...

$user->name = $row['user_name'];

...我知道我很可能会看到数据库中的数据被分配给一个对象,因此如果该行出现问题,我的第一 react 应该是确认 $row 是来自数据库的数组。现在如果我看到...

$user->name = $data['userName'];

...这意味着某个地方有一个对象正在填充该数据,因此我需要开始在代码中的不同位置查找以找出数据的设置位置。是的,最终它只是由编译器解析的 ASCII 文本,因此您可以命名任何您想要的内容并使用您想要的任何大小写,然后调试您的方式来找出数据源,但坚持这些约定应该有助于新的开发人员可以更轻松地浏览不熟悉的代码库。

如果您要求所有大小写都相同,那么在没有所有大小写不同的提醒的情况下,实际上会使代码导航变得更加困难,并且更容易忘记应用程序中的数据流和逻辑。

关于php - 统一命名方案问题: SQL column names and PHP array keys casing schemes conflict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23301846/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com