【发布时间】:2018-07-23 16:26:20
【问题描述】:
这段代码给出了标题的警告。 最简单的解决方案是将单引号添加到“not_a_constant”。 然而,这打破了“评估” 我尝试过连接字符串等。
不应删除 eval。 不应使用辅助变量。
eval('$some_defined_var[not_a_constant] .= "' . some_function('some_string') . '";')
请尝试使用 php 7.2 定义一些哑变量和函数的代码来检查警告和可能的解决方案。
编辑 1) 代码标准禁止对 string.s 使用双引号 2)我们试图避免在“not_a_constant”中的索引内对单引号进行转义。 这意味着,我想要实现的是:
$some_defined_var['not_a_constant']
【问题讨论】:
-
尝试在数组键周围添加双引号:
$some_defined_var["not_a_constant"] -
对不起,我添加了一些编辑。代码标准禁止:1)字符串的双引号。 2)在这种情况下,尽量不要使用 \' (单引号)。这意味着,我需要实现这一点: some_defined_var['not_a_constant'] (单引号) :-)
-
您想在字符串中添加单引号,但不允许使用双引号或转义单引号?在这里,你有点把自己逼到角落里了。
-
任何“禁止”某事的编码标准,即使以降低代码可读性为代价,都是一个糟糕的编码标准。我还认为,将您的编码标准应用于您的代码正在生成的代码是对每个人时间的巨大浪费。在它周围使用双引号。
-
以防万一“eval 正常,禁止双引号字符串”已经不是一个明显荒谬的规则,您在 PHP 7.2 中第一次看到此消息,因为 it was changed from a "notice" to a "warning"。据推测,您的编码标准只关心警告,但这段代码总是错误的,如果有人写
define('not_a_constant', 'something_completely_different'),就会严重崩溃。这段代码被破坏了很多程度,有点搞笑。
标签: php undefined eval php-7.2