1

这是一些伪代码代表我的代码,你不会理解范围。

Class Tester 有私有变量,持有类。数组包含 var 的基本名称。函数 bar 尝试从字符串中构造变量,然后使用它。如果这不能完成,我理解,但我只是在构建一个变量名。

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

1 回答 1

2

首先,您似乎在调用对象的方法——即使您评估字符串以获取类,您仍然需要实例化对象。

你可以做:

$class = 'PreText'.classBasicName.'PostText';
$object = new $class();
$object->DoWork();

请参阅此处的示例 3 ,或访问相关讨论

更新:

如果已知变量名,请使用$$fullClassName->doWork()

于 2012-05-09T19:37:54.527 回答