我想这样做:
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);
为什么不能使用{}
来使用从方法检索到的值?
$var = 'XmlParser';
new $var($test);
您定义变量$var并将其值用于实例类。
new ${'XmlParser'}($test);
${'XmlParser'}是指获取变量XmlParser的值,但您没有这样的变量。
您尝试获取未定义变量的值,结果得到这样的错误"PHP注意:未定义变量:XmlParser"。
如果您定义变量XmlParser,它将工作
class XmlParser {}
$XmlParser = 'XmlParser';
new ${'XmlParser'}($test);
此外,请阅读有关php字符串复杂语法