首页 > 解决方案 > PHP eval():: 使用未定义常量 not_a_constant- 假定为 'not_a_constant' php 7.2

问题描述

此代码给出了标题的警告。最简单的解决方案是将单引号添加到“not_a_constant”。然而,这打破了我尝试过的字符串连接等的“eval”。

不应删除 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']

标签: phpundefinedevalphp-7.2

解决方案


如果你不能转义单引号并且被禁止使用双引号,你就剩下heredoc和nowdoc。该手册向您展示了如何使用它们。对于您的代码,您可以使用:

<?php
$some_defined_var['not_a_constant'] = 'old ';

function some_function($a) { return 'New '.$a;}

eval( <<<'EOE'
$some_defined_var['not_a_constant'] .= "
EOE
. some_function('some_string') . '";'
);

var_dump($some_defined_var);

请注意,我通常不建议编写这样的代码。我只是在应用你的限制。我完全同意所有不喜欢你的编码标准的评论员。


推荐阅读