• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP实现重载的常用方法实例详解

    本文实例讲述了PHP实现重载的常用方法。分享给大家供大家参考,具体如下:

    php是弱类型语言,并没有像JAVA这种强类型语言一样有重载。

    重载一般来说就是拥有相同的函数名或方法名,但是参数列表却不同(包括参数个数和参数类型)

    从这个定义来说,php是没有重载的,因为php不允许存在相同的函数名。

    但是没有并不意味着不能实现。

    php有四种机制可以实现重载:(下面用java进行对比)

    1. 弱类型,无需定义变量类型

    先举一个JAVA重载的例子:

    class demo
    {
      public static void main (String[] args)
      {
        sum(1,1);//2
        sum(1,1.5);//2.5
        sum(1.5,1.5);//3.0
      }
      public static void sum(int var1,int var2){
          System.out.println(var1+var2);
      }
      public static void sum(int var1,double var2){
          System.out.println(var1+var2);
      }
      public static void sum(double var1,double var2){
          System.out.println(var1+var2);
      }
    }
    
    

    上面的代码如果用php语言实现:

    ?php
    function sum($var1,$var2){
      echo $var1+$var2;
    }
    sum(1,1);//2
    sum(1,1.5);//2.5
    sum(1.5,1.5);//3
    ?>
    
    

    2. 可选参数,允许变量设置默认值

    JAVA重载例子:

    class demo
    {
      public static void main (String[] args)
      {
        sum(1,2);//3
        sum(1,2,3);//6
      }
      public static void sum(int var1,int var2){
          System.out.println(var1+var2);
      }
      public static void sum(int var1,int var2,int var3){
          System.out.println(var1+var2+var3);
      }
    }
    
    

    用php可选参数特性实现:

    ?php
    function sum($var1,$var2,$var3=NULL){//$var3设置默认值
      echo $var1+$var2+$var3;
    }
    sum(1,2);//2
    sum(1,2,3);//2.5
    ?>
    
    

    可以看到同样的功能,但是php这种弱类型语言实现起来更简单

    3. 可变参数

    主要用到以下两个函数:

    func_num_args() 返回函数的参数个数
    func_get_args() 返回一个包含函数参数列表的数组

    具体实现方式:

    ?php
    class demo{
      public function method(){
        $numargs = func_num_args();//获得参数数量
        $args = func_get_args();//获得参数数组
        switch ($numargs) {//通过变量个数来确定调用哪个方法
          case 2:
            $this->method2($args[0],$args[1]);
            break;
          case 3:
            $this->method3($args[0],$args[1],$args[2]);
            break;
        }
      }
      private function method2($var1,$var2){
        #code...
      }
      private function method3($var1,$var2,$var3){
        #code...
      }
    }
    //调用
    $obj = new demo();
    $obj->method('var1','var2');
    $obj->method('var1','var2','var3');
    //看起来似乎通过一个接口调用
    //但其实内部已经调用了各自定义的方法
    ?>
    
    

    4. 使用魔术方法 __call()

    public mixed __call ( string $name , array $arguments )

    在对象中调用一个不可访问的方法时,__call()会被自动调用

    $name参数是要调用的方法名称 $argument参数是被调用方法的参数数组

    具体实现方式类似上面的第三要点:

    ?php
    class demo{
      public function __call($name,$arguments){
        if($name == "method"){
          switch (count($arguments)) {//获得参数数组个数
            case 2:
              $this->method2($args[0],$args[1]);
              break;
            case 3:
              $this->method3($args[0],$args[1],$args[2]);
              break;
          }
        }
      }
      private function method2($var1,$var2){
        #code...
      }
      private function method3($var1,$var2,$var3){
        #code...
      }
    }
    //调用
    $obj = new demo();
    $obj->method("var1","var2");
    $obj->method("var1","var2","var3");
    ?>
    
    

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • php面向对象的方法重载两种版本比较
    • php继承中方法重载(覆盖)的应用场合
    • PHP使用方法重载实现动态创建属性的get和set方法
    • PHP利用func_get_args和func_num_args函数实现函数重载实例
    • php中拷贝构造函数、赋值运算符重载
    • PHP小技巧之函数重载
    • PHP面相对象中的重载与重写
    • PHP面向对象程序设计重载(overloading)操作详解
    • PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
    • php魔术函数__call()用法实例分析
    • PHP __call()方法实现委托示例
    • php 使用 __call实现重载功能示例
    上一篇:PHP接口继承及接口多继承原理与实现方法详解
    下一篇:phpStudy 2016 使用教程详解(支持PHP7)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PHP实现重载的常用方法实例详解 PHP,实现,重载,的,常用,方法,