我正试图弄清楚这是我的逻辑问题还是缺乏知识。
我有一个静态方法ConnectionFactory::getConnectionInterface($config['type'])
,它返回一个字符串,一个类名。该类有一个方法,createConnection
。我想知道我是否可以在一行中完成所有操作。我尝试过各种各样的事情,比如
new {ConnectionFactory::getConnectionInterface($config['type'])}()->createConnection();
切换{}
为()
,将它们添加到全新的等等。我觉得我在某些方面更接近,在其他方面更进一步。
我知道我可以让工厂返回一个对象的新实例(根据我的理解,这可能是正确的方法吗?),但我希望弄清楚如何编写这段代码,或者如果我不能。
答案 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()