具有const属性的Eval接口

时间:2014-06-26 17:11:03

标签: php eval

这是我的代码:

$array = array(
    'id' => 1,
    'name' => 'Paul',
    'current_job' => 'coder'
);
$interface = 'interface PropertyInterface {';

foreach ($array as $key => $value) {
    $interface .= 'const '.strtoupper($key).' = '.$value.';';
}

$interface .= '}';
eval($interface);

class Foo implements PropertyInterface
{

}
跑步时

var_dump(Foo::ID);

它工作,返回1,但运行时:

var_dump(Foo::NAME);

或:

var_dump(Foo::CURRENT_JOB);

它不起作用,这是错误:

使用未定义的常量toan - 假设......

出了什么问题?有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

这是因为您将$value连接为常量。

$interface .= 'const '.strtoupper($key).' = '.$value.';';

以上翻译为:

const NAME = Paul;

您需要用双引号"'.$value.'"

换行
$interface .= 'const '.strtoupper($key).' = "'.$value.'";';

转换为:

const NAME = "Paul";