這兩個函數實現函數的重載!!
1、預設參數
從這個上面就可以看到,如果一個函數裡面,對不是必須參數,添加相應的預設值,就可以完成相應的功能。
代碼如下 |
複製代碼 |
function overloadFun($param1, $param2 = '1',$param3 = true) { // do something } |
利用函數func_get_args()和call_user_func_array()
PHP代碼:
代碼如下 |
複製代碼 |
function rewrite() { $args = func_get_args(); if(func_num_args() == 1) { func1($args[0]); } else if(func_num_args() == 2) { func2($args[0], $args[1]); } } function func1($arg) { echo $arg; } function func2($arg1, $arg2) { echo $arg1, ' ', $arg2; } rewrite('PHP'); //調用func1 rewrite('PHP','China'); //調用func2 |
2.使用預設值,從而根據輸入,得到自己想要的結果:
代碼如下 |
複製代碼 |
function test($name="小李",$age="23"){ echo $name." ".$age; } test(); echo "<br/>"; test("a"); echo "<br/>"; test("a","b"); |
3.利用__call($name, $arg) 函數進行處理。
代碼如下 |
複製代碼 |
<?php class OverLoad{ function __call($name, $args) { if($name=='overloadFun') { switch(count($args)) { case 0: $this->overloadFun0();break; case 1: $this->overloadFun1($args[0]); break; case 2: $this->overloadFun2($args[0], $args[1]); break; default: //do something break; } } } function overloadFun0() { echo 0; } function overloadFun1($var1) { echo $var1; } function overloadFun2($var1,$var2) { echo $var1+$var2; } } $test=new OverLoad(); $test->overloadFun()."<br />". $test->overloadFun(1)."<br />". $test->overloadFun(1,2)."<br />"; ?> |
有了這樣的方法之後我們就可以利用它們來實現簡單函數重載了,但有一點要註明的是php 作為一種弱類型語言,本身不能像強型別如java ,c++那樣,直接的實現重載,至少現在不可以以後版本會不會有我們不知道,