中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php如何實現重載

發布時間:2020-11-05 10:35:07 來源:億速云 閱讀:167 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關php如何實現重載,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

php實現重載的方法:1、弱類型,無需定義變量類型;2、可選參數,允許變量設置默認值;3、可變參數;4、使用魔術方法【__call()】。

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如何實現重載就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

寻乌县| 安陆市| 万州区| 敦煌市| 南郑县| 土默特右旗| 东港市| 密云县| 德庆县| 鄂托克前旗| 福泉市| 盐城市| 三台县| 吉林市| 固始县| 吴桥县| 三门县| 郧西县| 綦江县| 武功县| 固安县| 扬州市| 河南省| 咸宁市| 龙南县| 来凤县| 肥东县| 江城| 千阳县| 丘北县| 马关县| 南漳县| 肥西县| 繁峙县| 泸西县| 五莲县| 台东市| 老河口市| 温州市| 凤庆县| 塔城市|