php重载

php 作为一种弱类型语言,本身不能像强类型如java ,c++那样,直接的实现重载。不过可以通过一些方法,间接的实现重载。

  1. 使用一个统一的函数来实现重载。该方法要使用func_get_args()和func_num_args()方法。

<?php  
      
        function test1($name){  
            echo $name;  
        }  
  
        function test2($name,$age){  
            echo $name.$age;  
        }  
  
        function load(){  
            //返回输入的元素数目  
            $num=func_num_args();  
            //返回输入元素列表的数组形式  
            $arr=func_get_args();  
              
            if($num==1){  
                test1($arr[0]);  
            }else {  
                test2($arr[0],$arr[1]);  
            }  
        }  
  
    load("a");  
    echo "<br/>";  
    load("a","b");  
?>


2.当对象试着调用不存在或者受权限限制的方法时,__call()方法会被自动调用,从而可以实现类型重载的效果。该方法是php5新增的方法。

<?php  
    class A{  
        //name :调用的方法名字。args:参数列表  
        function __call($name,$args){  
            $num=count($args);  
            if($num==1){  
                $this->test1($args[0]);  
            }  
            else {  
            $this->test2($args[0],$args[1]);  
            }  
        }  
  
        function test1($name){  
            echo $name;  
        }  
        function test2($name, $age){  
            echo $name." ".$age;  
        }  
    }  
      
    $a=new A();  
    $a->a("a");  
    echo "<br/>";  
    $a->a("a","b");  
  
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值