Heim > Backend-Entwicklung > PHP-Tutorial > PHP中的java模式重载

PHP中的java模式重载

WBOY
Freigeben: 2016-06-13 10:40:59
Original
764 Leute haben es durchsucht

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)

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage