链接获取类名来创建类并调用方法?

时间:2017-11-06 22:12:11

标签: php

我正试图弄清楚这是我的逻辑问题还是缺乏知识。

我有一个静态方法ConnectionFactory::getConnectionInterface($config['type']),它返回一个字符串,一个类名。该类有一个方法,createConnection。我想知道我是否可以在一行中完成所有操作。我尝试过各种各样的事情,比如

new {ConnectionFactory::getConnectionInterface($config['type'])}()->createConnection();

切换{}(),将它们添加到全新的等等。我觉得我在某些方面更接近,在其他方面更进一步。

我知道我可以让工厂返回一个对象的新实例(根据我的理解,这可能是正确的方法吗?),但我希望弄清楚如何编写这段代码,或者如果我不能。

1 个答案:

答案 0 :(得分:1)

您需要将新对象包装在()

(new ConnectionFactory::getConnectionInterface($config['type'])())->createConnection();

或者,您可以返回类的实例而不是类名。

public static function getConnectionInterface($type) {
    // generate class name $class

    return new $class()
}

然后使用该对象而不是在调用它时创建新实例。

$connection = ConnectionFactory::getConnectionInterface($config['type'])->createConnection()