我正在运行其他人的代码,他们经常避免转义数组键。
例如:
$row_rsCatalogsItemsName
而不是
$row_rsCatalogsItems‘’Name‘
所以我不断地对我所接触的每一件事都做一些微小的改变,仅仅是为了对付那种懒惰。但现在我想知道这样做是否有多大的好处。我得到的结果是,在默认使用字符串之前,它会检查常量(在php中处理常量时,我讨厌这种行为,因为它们即使没有定义也验证为true ),但我也不确定是否值得费心地更改所有的常量作为数组键的实例。
有什么建议吗?
发布于 2011-04-12 22:11:57
有不止一个理由。
做
error_reporting(E_ALL);在您的脚本开始时,您将立即看到所有的原因。
撇开乐趣,在实践中你可能会认为,这是我可能会逃脱的事情。你可能是对的。但作为一名开发人员,你必须在什么是可接受的黑客攻击以及什么是口头辱骂的理由上划出界限。对我来说,这种特殊的行为超出了这一界限。
的最直接的原因是它使error_reporting(E_ALL)不可用。良好的开发实践要求报告所有错误,这些通知为您设置了错误代码和更困难的调试会话。
更新:--我没有解决现有情况的实际解决方案的问题,下面是我将在您的位置上所做的工作:
\[(a-zA-Z_-)\]替换为['$1'] (或类似的东西)。如果替换的数量等于日志文件中的通知数量,则为黄金。否则,试着分而治之,直到您看到正则表达式是failing.发布于 2011-04-12 22:13:29
从技术上讲,这样做是不对的。你应该用单引号。如果您修复这些代码,它将使用较少的cpu周期和内存来运行代码。即使在一个文件中有1000个固定的,您会注意到差异吗?可能不会。
如果您修复它,它将是正确的,没有警告或通知,而不是真正的速度或内存使用。
发布于 2011-04-12 22:26:57
我要加上引号。如果没有其他的话,以确保:
上
话虽如此,我知道程序员的时间是宝贵的。因此,您可以选择懒散的编码器,并使用正则表达式,如下所示:
$input = '$row_rsCatalogsItems[Name]';
$str = preg_replace('/(\$[a-zA-Z_]+\[)([a-zA-Z]+)(\])/', '${1}\'${2}\'${3}', $input);
echo $str;(您可能需要使用该表达式来逐步完成这些更改,以确保您正在更改正确的内容;)
https://stackoverflow.com/questions/5642197
复制相似问题