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