举例来说:
class myCar{
   public $funcName="run";
   public function run(){
       echo "i'm running now!";
   }
   public function say(){
       //这里我不想用。$this->run();
       //而是通过变量$funcName来执行相应的方法,我该怎么做呢?
       //就像: $this->$funcName();虽然可以执行,但总觉得这样做既不规范,可能又低效。我是新手,有很多原理还理解不清楚,请问各位前辈有什么好的实现方法吗?  
   }} 

解决方案 »

  1.   

    就是用$this->$funcName()啊,你還想怎麼規範?
    你本身的需求就很奇怪。
      

  2.   

    呵呵,是这样的。
    如果我的变量是外部文件的一个数组,我可以作为一个配置文件引用到类里面来。
    例如:
    $funcName=array("a"=>"a_func","b"=>"b_func");
    而我在类里面,想做一个总的处理函数:
    如果外部传入的参数,类型为a就执行类里a_func方法,类型为b则执行b_func方法,因为我假定对应的处理方法a_func和b_func都是未知的,所以不想直接在类里用switch或者if等判断的方式来执行。
    现在是,如果就用$this->$funcName();我想问下php内部是怎么处理的呢?
    百度了有人说,会先去查找所有的变量,因此会很费资源。是这样的么?还请前辈们多多给予分析。感谢。
      

  3.   

    $this->$funcName()这样就很规范
      

  4.   

    我觉得你与其在类内部做文章,不如直接在外部调用上作文章。在对象调用方法时,用变量直接构造方法名。
    <?php
    class myCar{
      public function run(){
      echo "i'm running now!<br />";
      }
      public function stop(){
      echo "i'm stop now!<br />";
      }
    }
    $funcName=array("a"=>"run","b"=>"stop");
    $car=new myCar();
    $car->$funcName['a']();
    $car->$funcName['b']();
    ?>