返回 PHP 中的方法
Returning a method in PHP
我有一个 class 叫 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){}
}
我想 return 调用 fromM
或 fromKM
的私有方法给它的调用者,所以我可以在 fromM
中使用我的另一个自定义参数调用 fromM
=16=]方法。
当我运行上面的代码时,出现错误Undefined property: Converter::$fromM
我的问题是,是否可以 return PHP 中的方法?它是如何完成的?谢谢。
您不能 return 方法,但您可以使用方法名称动态调用它:
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){}
}
您可以 return 您的方法,但请记住特定方法的可见性,以及可以从哪个范围调用它们。这两个方法是私有的,只能在给定的class内调用。
此代码的问题是您将方法作为属性调用,因此出现未定义 属性 的错误。
它们应该像带括号的方法一样被调用,并且必须传递 2 个 $this->fromM($value, $to)
,您还需要将参数 $value
和 $to
传递给 switchUnitCall()
,因为它们是也是强制性的。
另外,这两种方法需要return一个结果:
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
}
}
我有一个 class 叫 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){}
}
我想 return 调用 fromM
或 fromKM
的私有方法给它的调用者,所以我可以在 fromM
中使用我的另一个自定义参数调用 fromM
=16=]方法。
当我运行上面的代码时,出现错误Undefined property: Converter::$fromM
我的问题是,是否可以 return PHP 中的方法?它是如何完成的?谢谢。
您不能 return 方法,但您可以使用方法名称动态调用它:
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){}
}
您可以 return 您的方法,但请记住特定方法的可见性,以及可以从哪个范围调用它们。这两个方法是私有的,只能在给定的class内调用。
此代码的问题是您将方法作为属性调用,因此出现未定义 属性 的错误。
它们应该像带括号的方法一样被调用,并且必须传递 2 个 $this->fromM($value, $to)
,您还需要将参数 $value
和 $to
传递给 switchUnitCall()
,因为它们是也是强制性的。
另外,这两种方法需要return一个结果:
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
}
}