久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

PHP實現重載的常用方法實例詳解

這篇文章主要介紹了PHP實現重載的常用方法,結合實例形式對比java分析了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程序設計有所幫助。

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了PHP有序表查找之插值查找算法,簡單分析了插值查找算法的概念、原理并結合實例形式分析了php實現針對有序表插值查找的相關操作技巧,需要的朋友可以參考下
下面小編就為大家分享一篇ThinkPHP整合datatables實現服務端分頁的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇PHP實現APP微信支付的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要介紹了PHP實現的多維數組排序算法,結合實例形式對比分析了php針對多維數組及帶有鍵名的多維數組進行排序相關操作技巧與注意事項,需要的朋友可以參考下
這篇文章主要為大家詳細介紹了php結合ajaxuploadfile實現無刷新文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本篇文章給大家詳細介紹了PHP開發接口使用RSA進行加密解密方法,對此有興趣的朋友可以學習下。
主站蜘蛛池模板: 国产亚洲二区 | 久久久久久久久久久久亚洲 | 视频一区在线观看 | www.日本精品| 黑人精品| 国产精品中文字幕在线播放 | 一级毛片色一级 | 国产女人精品视频 | 久久亚洲欧美日韩精品专区 | 国产男女视频网站 | 亚洲精品成人av久久 | 成人精品视频在线观看 | 日韩一区二区在线播放 | 国产精品国产自产拍高清 | 91久久精品一区二区三区 | 国产精品久久777777 | jizz在线看片 | 日韩视频专区 | 久久久精彩视频 | 精品伊人 | 国产精品毛片无码 | 国产福利资源在线 | 日韩成人| 91福利影院 | 男人天堂视频在线观看 | 日韩精品在线观看一区二区三区 | 日本精品一区二区三区在线观看 | 97avcc| 午夜专区 | 成人妇女免费播放久久久 | 免费能直接在线观看黄的视频 | 日本不卡一区二区三区在线观看 | 免费观看一级毛片 | 日韩视频在线播放 | 97国产成人 | 亚洲视频免费一区 | 欧美日韩精品在线一区 | 亚洲精品一区二三区不卡 | 在线色网址 | 午夜影院在线观看视频 | 精品国产一区二区三区性色av |