<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.';
echo $str. "\n";
eval("\$str = \"$str\";");
echo $str. "\n";
?>
字符串 或者在你的情况下:
<?php
$string = "\$string2 = \$this->model_db->get_results();";
// ... later ...
eval($string);
// Now $string2 is equal to $this->model_db->get_results()
?>
3条答案
按热度按时间vktxenjb1#
你可以有一个可变的变量/函数,但不能有可变的方法链.然而你可以创建一个方法链使用可变的变量/函数.
查看php文档的此页:http://php.net/manual/en/language.variables.variable.php
它显示了使用字符串作为对象或方法名称的用法.使用eval可能会导致安全漏洞,具体取决于您的数据源。
字符串
7d7tgy0s2#
听起来你需要PHP的eval function,它执行包含PHP代码的字符串。例如:
字符串
然而,*eval通常是一个坏主意 *。也就是说,有更好的方法来做你可能认为可以用
eval
做的事情。在上面的例子中,你必须确保
$this
在调用eval
的代码的作用域中。这意味着如果你在代码的一个完全不同的部分尝试eval($get_results)
,你可能会得到一个关于$this
或$this->model_db
不存在的错误。一个更健壮的替代方法是创建一个anonymous function(在PHP 5.3及更高版本中可用):
型
但是如果
$this
现在不可用呢?简单:将其作为函数参数:型
xu3bshqb3#
php.net/manual/en/function.eval.php
字符串
或者在你的情况下:
型