> 백엔드 개발 > PHP 튜토리얼 > PHP中的java模式重载

PHP中的java模式重载

WBOY
풀어 주다: 2016-06-13 10:40:59
원래의
765명이 탐색했습니다.

PHP中的java方式重载
有的时候,能够调用可变参数的同一个方法会非常方便。PHP能够定义带默认值的可选参数使这一做法成为可能。品牌网站建设:http://www.ucantech.com/

可以在php5中用__call()实现这种方法重载。下面来看一个示例。假设要用重载行为,那么要将其放到抽象父类中。

Php代码

    abstract class OverloadableObject{ 
        function __call($name, $args){ 
          $method = $name."_".count($args);  
          if(!method_exists($this,$method)){ 
               throw new Exception("Call to undefined method".get_class($this)."::$method"); 
          }    
           return call_user_func_array(array($this,$method),$args); 
      
       } 
    } 


这个类方法的主要行为都在
Php代码

    $method = $name."_".count($args);  

显示一行代码中定义了。如果调用未定义方法,__call()方法会生成一个新方法,其名称由原始方法和参数个数构成,用下划线分开。然后用新生成的方法名调用改方法,将原来的参数也一起传递过去。

现在,如果要使用一个名为multiply的重载方法,可以使用两个或三个参数来调用它,并在每种情况下进行相应操作,可以分别用两个方法:multiply_2和multiply_3

Php代码

    class Multiplier extends OverloadableObject{ 
       function multiply_2($one,$two){ 
         return $one*$two;  
       } 
       function multiply_3($one,$two,$three){ 
         return $one*$two*$three; 
       } 
    } 

为了使用这段代码,只调用带有两个或三个参数的multiply方法。

$multi = new Multiplier;

echo $multi->multiply(5,6)."\n";

echo $multi->multiply(5,6,7)."\n"; (fblww-0112)

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿