返回PHP中的方法
我有一个叫做返回PHP中的方法,php,function,return-value,Php,Function,Return Value,我有一个叫做Converter 类转换器{ 公共函数转换($value、$from、$to){ $this->switchUnitCall($from)($value,$to); } 专用函数switchUnitCall($from){ 转换($from){ 案例“m”: 返回$this->fromM;break; 案例“km”: 返回$this->fromKM;break; } } 私有函数fromM($value$to){} 私有函数fromKM($value$to){} } 我想将名为f
Converter
类转换器{
公共函数转换($value、$from、$to){
$this->switchUnitCall($from)($value,$to);
}
专用函数switchUnitCall($from){
转换($from){
案例“m”:
返回$this->fromM;break;
案例“km”:
返回$this->fromKM;break;
}
}
私有函数fromM($value$to){}
私有函数fromKM($value$to){}
}
我想将名为fromM
或fromKM
的私有方法返回给它的调用者,这样我就可以使用convert
方法中的另一个自定义参数调用fromM
当我运行上面的代码时,我得到了错误未定义的属性:Converter::$fromM
我的问题是,是否可以在PHP中返回一个方法?这是怎么做到的?谢谢。您不能返回方法,但可以使用方法名称动态调用它:
类转换器{
公共函数转换($value、$from、$to){
$method=$this->switchUnitCall($from);
$this->$method($value,$to);
}
专用函数switchUnitCall($from){
转换($from){
案例“m”:
返回“fromM”;中断;
案例“km”:
返回“fromKM”;中断;
}
}
私有函数fromM($value$to){}
私有函数fromKM($value$to){}
}
您可以返回您的方法,但请记住特定方法的可见性,以及可以从哪个范围调用它们。这两个方法是私有的,只能在给定的类中调用
这段代码的问题是,您已经将方法作为属性调用,因此未定义属性的错误
它们应该像带括号的方法一样被调用,并且必须传递两个参数$this->fromM($value,$to)
,而且还需要将参数$value
和$to
传递到switchUnitCall()
,因为它们也是必须传递的。
另外,这两种方法需要返回一个结果:
class Converter {
public function convert($value, $from, $to){
$this->switchUnitCall($from, $value, $to);
}
private function switchUnitCall($from, $value, $to){
switch($from){
case 'm':
return $this->fromM($value, $to);
break;
case 'km':
return $this->fromKM($value, $to);
break;
}
}
private function fromM($value, $to){
//return conversion
}
private function fromKM($value, $to){
//return conversion
}
}
这是您的实际案例还是示例,最好将开关/案例放在
convert
方法中,而不是将其传递给其他人。我建议使用通过方法名称访问的可调用返回:谢谢您的回答。根据您的代码,我必须为每种情况编写冗余参数,这将花费很长时间,而不是调用它时只需一次。