这是一些伪代码代表我的代码,你不会理解范围。
Class Tester有私有变量,持有类。 Array保存var的基本名称。 函数栏尝试从string中构造变量,然后使用它。 如果无法做到这一点,我理解,但我只是构建一个变量名。
Class Tester{
private $preClass1post = new TestClass1();
private $preClass2post = new TestClass2();;
private $preClass2post = new TestClass2();;
public $classBasicNames = array('Class1','Class2','Class3');
function Bar(){
foreach($classBasicNames as $classBasicName){
$fullClassName = 'PreText'.classBasicName.'PostText';
$fullClassName->DoWork();
//always throws object does not exist
}
}
}
//actual code for context
$mapperName = 'mapper'.$entityName.'Stat';
echo $mapperName;
$dbos = $this->{$mapperName}->fetchAll($options);
答案 0 :(得分:2)
首先,您似乎在调用对象上的方法 - 即使您评估字符串以获取类,您仍然需要实例化该对象。
你可以这样做:
$class = 'PreText'.classBasicName.'PostText';
$object = new $class();
$object->DoWork();
请参阅示例3 here,或访问相关的discussion。
<强>更新强>
如果知道变量名称,请使用$$fullClassName->doWork()