Php 通过字符串引用类变量

Php 通过字符串引用类变量,php,Php,这是一些表示我的代码的伪代码,您不会理解它的作用域 类测试员拥有私有变量,持有类。 数组保存var的基名称。 函数栏尝试从中构造字符串形式的变量,然后使用它。 如果不能做到这一点,我理解,但我只是在构造一个变量名 Class Tester{ private $preClass1post = new TestClass1(); private $preClass2post = new TestClass2();; private $preClass2post =

这是一些表示我的代码的伪代码,您不会理解它的作用域

类测试员拥有私有变量,持有类。 数组保存var的基名称。 函数栏尝试从中构造字符串形式的变量,然后使用它。 如果不能做到这一点,我理解,但我只是在构造一个变量名

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

首先,您似乎在调用对象上的方法——即使您计算字符串以获得类,您仍然需要实例化对象

你可以做:

$class = 'PreText'.classBasicName.'PostText';
$object = new $class();
$object->DoWork();
请参见示例3,或访问相关网站

更新:


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

好吧,是的,这肯定行不通。字符串不是对象…或者您可以设置一个对象数组(以字符串作为键)并在其中循环。类在尝试之前初始化。如果对象是静态方法,则不需要实例化该对象。$this->$$mapperName->fetchAll($options);