这是我的代码:
$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 - 假设......
出了什么问题?有人可以帮帮我吗?
答案 0 :(得分:0)
这是因为您将$value
连接为常量。
$interface .= 'const '.strtoupper($key).' = '.$value.';';
以上翻译为:
const NAME = Paul;
您需要用双引号"'.$value.'"
$interface .= 'const '.strtoupper($key).' = "'.$value.'";';
转换为:
const NAME = "Paul";