有一种快捷方法可以从返回字符串的方法创建对象吗?
目前,我用过:
class MyClass {
/**
* @return string
*/
public function getEntityName() {
return 'myEntityName';
}
}
$myClassInstance = new MyClass();
// Need to get string
$entityName = $myclassInstance->getEntityName();
// And after I can instantiate it
$entity = new $entityName();
答案 0 :(得分:0)
有获取字符串的快捷语法,但不是用于在PHP中创建字符串中的对象。请参阅以下代码,其中我还包含了一个' myEntityName'类:
<?php
class myEntityName {
public function __construct(){
echo "Greetings from " . __CLASS__,"\n";
}
}
class MyClass {
/**
* @return string
*/
public function getEntityName() {
return 'myEntityName';
}
}
$entityName = ( new MyClass() )->getEntityName();
$entity = new $entityName();
使用一行代码实例化MyClass对象并且执行其getEntityName方法,该方法返回字符串$ entityName。有趣的是,如果我用以下内容替换我的单行程序,除了HipHop虚拟机(hhvm-3.0.1 - 3.4.0)之外,它在所有版本的PHP中都会失败:
$entityName = new ( ( new MyClass() )->getEntityName() );