我可以在一行中使用类变量作为变量函数在同一类的方法中吗?

时间:2015-02-12 16:22:26

标签: php

我可以在同一个类的方法中使用实例变量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)以这种方式使用它或让我在本地设置它时使用它。

2 个答案:

答案 0 :(得分:2)

将其包裹在{}

  function processClass(){
     $this->{$this->functionName}();
  }

答案 1 :(得分:1)

链接方法:

function setFunctionName($name){
    $this->functionName = $name;

    return $this;
}

$theClass->setFunctionName('testFunction')->processClass();