国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

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

2024-05-05 00:00:35
字體:
來源:轉載
供稿:網友

本文實例講述了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語言實現:

<?phpfunction sum($var1,$var2){  echo $var1+$var2;}sum(1,1);//2sum(1,1.5);//2.5sum(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可選參數特性實現:

<?phpfunction sum($var1,$var2,$var3=NULL){//$var3設置默認值  echo $var1+$var2+$var3;}sum(1,2);//2sum(1,2,3);//2.5?>

可以看到同樣的功能,但是php這種弱類型語言實現起來更簡單

3. 可變參數

主要用到以下兩個函數:

func_num_args() 返回函數的參數個數
func_get_args() 返回一個包含函數參數列表的數組

具體實現方式:

<?phpclass 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參數是被調用方法的參數數組

具體實現方式類似上面的第三要點:

<?phpclass 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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 商丘市| 栾川县| 仪征市| 双鸭山市| 贡嘎县| 长垣县| 葫芦岛市| 和平县| 正镶白旗| 芒康县| 普格县| 江达县| 宜城市| 绥阳县| 潞西市| 周宁县| 海盐县| 通海县| 岱山县| 乐业县| 呼伦贝尔市| 屏东市| 秭归县| 木里| 遂昌县| 沈丘县| 永州市| 祥云县| 乐亭县| 温州市| 石家庄市| 天峨县| 合水县| 青州市| 梨树县| 巩义市| 宣武区| 沙坪坝区| 金溪县| 和静县| 武安市|