首页 > 解决方案 > 在 PHP 中返回一个方法

问题描述

我有一堂课叫Converter

class Converter {
  public function convert($value, $from, $to){
    $this->switchUnitCall($from)($value, $to);
  }

  private function switchUnitCall($from){
    switch($from){
      case 'm':
        return $this->fromM; break;
      case 'km':
        return $this->fromKM; break;
    }
  }

  private function fromM($value, $to){}
  private function fromKM($value, $to){}
}

我想将调用的私有方法返回给它的调用者,这样我就可以在方法中fromM使用我的另一个自定义参数来调用它。fromKMfromMconvert

当我运行上面的代码时,我得到了错误Undefined property: Converter::$fromM

我的问题,是否可以在 PHP 中返回一个方法?它是如何完成的?谢谢你。

标签: phpfunctionreturn-value

解决方案


您不能返回方法,但可以使用方法名称动态调用它:

class Converter {
  public function convert($value, $from, $to){
    $method=$this->switchUnitCall($from);
    $this->$method($value, $to);
  }

  private function switchUnitCall($from){
    switch($from){
      case 'm':
        return "fromM"; break;
      case 'km':
        return "fromKM"; break;
    }
  }

  private function fromM($value, $to){}
  private function fromKM($value, $to){}
}

推荐阅读