php - 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']
解决方案
如果你不能转义单引号并且被禁止使用双引号,你就剩下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);
请注意,我通常不建议编写这样的代码。我只是在应用你的限制。我完全同意所有不喜欢你的编码标准的评论员。
推荐阅读
- git - 如何使用`git`切换分支?
- jquery - Jquery-ui Datepicker 未在 Rails 视图中显示,出现错误 Uncaught TypeError: $(...).datepicker is not a function
- reactjs - 如何在不更新状态的情况下显示模态
- python - Flask:使应用程序状态持续存在于选项卡上
- r - 取消嵌套 tibble 列:使用 dplyr v1.0.0 进行“宽”数据摘要
- spring-boot - Java Spring 启动应用程序无法执行 java.lang.IllegalStateException: Annotation @EnableCircuitBreaker found
- django - Django Admin:将某些员工用户限制为他们自己组中的数据库记录
- java - 当 arraylist 包含对象时,如何使用 Junit/Java 测试 compareTo?
- r - 基于另一个光栅堆栈对光栅堆栈中的像素值求和
- python - 我无法解决问题 createview 缺少查询集