我想这样做:
private static function parserLib() {
return USE_XML ? 'XmlParser' : 'IdfParser';
}
static function create($arr = []) {
return new ${self::parserLib()}($arr);
}
我已尝试过这个:
new ${'XmlParser'}($test);
不能工作。
这有效:
$var = 'XmlParser';
new $var($test);
为什么不能使用{}
来使用从方法中检索到的值?
答案 0 :(得分:1)
$var = 'XmlParser';
new $var($test);
您定义变量 $ var 并将值用于实例类。
new ${'XmlParser'}($test);
$ {'XmlParser'}表示获取变量XmlParser的值,但您没有这样的变量。
你尝试获取未定义变量的值,结果得到了这样的错误“PHP注意:未定义的变量:XmlParser”。
如果定义变量XmlParser,它将起作用
class XmlParser {}
$XmlParser = 'XmlParser';
new ${'XmlParser'}($test);
另请阅读有关php string complex syntax
的信息