如何解决php:是否有充分的理由引用所有数组键/索引?
| 我正在遍历别人的代码,他们总是避免转义数组键。 例如: $ row_rsCatalogsItems [名称] 代替 $ row_rsCatalogsItems [\'名称\'] 因此,我会不断地对触摸的所有内容进行微小的更改,以应对这些惰性。但是现在我想知道这样做是否会有更大的好处。我知道它会在默认为字符串之前检查常量(我在处理常量时会讨厌PHP中的行为,因为即使未定义它们也会验证为true),但我不确定这是否值得更改所有很多常量如数组键实例的麻烦。 有什么建议吗?解决方法
有多个原因。
做
error_reporting(E_ALL);
在脚本的开头,您会立即看到所有原因。
除了娱乐,在实践中您可能会认为,这是我可能会避免的事情。你可能是对的。但是作为开发人员,您必须在什么地方可以接受黑客攻击以及什么是口头辱骂的原因上划清界限。对我来说,这种特殊行为超出了界限。
这很糟糕的最直接原因是它使ѭ1无法使用。良好的开发实践要求报告所有错误,这些注意事项使您可以使用错误的代码和更困难的调试会话。
更新:我没有解决针对现有情况的实际解决方案的问题,因此这是我在您的鞋子上要做的事情:
找到负责的人,并确保他们永远不会以任何必要的方式再次这样做。
运行有问题的脚本,并从日志文件中获取有关未定义常量的所有通知。
使用正则表达式搜索并从编辑器中进行替换,尝试将\\[(a-zA-Z_-)\\]
替换为[\'$1\']
(或类似名称)。如果替换数量等于日志文件中的通知数量,那么您就很聪明。否则,请尝试分而治之,直到看到正则表达式失败的地方。
根据需要对所有其他脚本重复此操作。
,这样做在技术上是不正确的。您可能应该使用单引号。如果修复了这些问题,它将使用较少的cpu周期和内存来运行代码。即使在一个文件中修复了1000个文件,您是否也会注意到差异?可能不会。
如果您对其进行了修复,那将是为了确保正确性而没有警告或通知,而实际上不是为了提高速度或内存使用率。
,我要加上引号。如果没有其他要求,请确保:
代码的可读性不会降低(如果有人认为您使用的是常量而不是字符串值)
每次评估都不会浪费额外的周期
话虽如此,我知道程序员的时间很宝贵。因此,您可以选择使惰性编码器懒惰,并使用如下所示的正则表达式:
$input = \'$row_rsCatalogsItems[Name]\';
$str = preg_replace(\'/(\\$[a-zA-Z_]+\\[)([a-zA-Z]+)(\\])/\',\'${1}\\\'${2}\\\'${3}\',$input);
echo $str;
(您可能想使用该表达式来逐步完成更改,以确保您正在更改正确的内容;))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。