从变量创建实例


Create instance from a variable

我想这样做:

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字符串复杂语法