我可以在同一个类的方法中使用实例变量dynamic variable function。但只能在本地声明方法中的另一个变量。我无法使用它:" $ this-> $ this-> functionName "。我的意思是:
这有效: TheClass.php
<?PHP
class TheClass{
public $functionName;
function setFunctionName($name){
$this->functionName = $name;
}
function processClass(){
$tempFunctionName = $this->functionName;
$this->$tempFunctionName();
}
function testFunction(){
echo "this works";
}
}
?>
main.php
<?PHP
include "TheClass.php";
$theClass = new TheClass();
$theClass->setFunctionName('testFunction');
$theClass->processClass();
?>
但我不能像这样在一行中使用它:
function processClass(){
$this->$this->functionName();
}
是否有办法(不使用call_user_func)以这种方式使用它或让我在本地设置它时使用它。
答案 0 :(得分:2)
将其包裹在{}
function processClass(){
$this->{$this->functionName}();
}
答案 1 :(得分:1)
链接方法:
function setFunctionName($name){
$this->functionName = $name;
return $this;
}
$theClass->setFunctionName('testFunction')->processClass();