从变量创建实例

时间:2015-11-15 17:28:41

标签: php oop

我想这样做:

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);

为什么不能使用{}来使用从方法中检索到的值?

1 个答案:

答案 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

的信息