怎么在PHP中實現(xiàn)一個函數(shù)重載功能?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)伍家崗免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。"; echo '$name為'.$name."
"; print_r ($arguments); } } (new A)->test("test","argument"); ?>
運行結(jié)果為:
__call調(diào)用
$name為test
Array ( [0] => test [1] => argument )
因此只需要利用該魔術(shù)方法既可以實現(xiàn)函數(shù)重載。
代碼如下:
"; } function f2($a1,$a2) { echo "2個參數(shù)".$a1.",".$a2."
"; } function f3($a1,$a2,$a3) { echo "3個參數(shù)".$a1.",".$a2.",".$a3."
"; } } (new A)->f('a'); (new A)->f('a','b'); (new A)->f('a','b','c'); ?>
輸出如下:
1個參數(shù)a
2個參數(shù)a,b
3個參數(shù)a,b,c
同樣的在PHP中,實現(xiàn)構(gòu)造函數(shù)的重載,也只能變通的實現(xiàn)。實現(xiàn)的關(guān)鍵要素是獲取輸入?yún)?shù),并且根據(jù)輸入?yún)?shù)判斷調(diào)用哪個方法。下面是一個示例代碼:
"; $a = func_get_args(); //獲取構(gòu)造函數(shù)中的參數(shù) $i = count($a); if (method_exists($this,$f='__construct'.$i)) { call_user_func_array(array($this,$f),$a); } } function __construct1($a1) { echo "1個參數(shù)".$a1."
"; } function __construct2($a1,$a2) { echo "2個參數(shù)".$a1.",".$a2."
"; } function __construct3($a1,$a2,$a3) { echo "3個參數(shù)".$a1.",".$a2.",".$a3."
"; } } $o = new A('a'); $o = new A('a','b'); $o = new A('a','b','c'); ?>
執(zhí)行構(gòu)造函數(shù)
1個參數(shù)a
執(zhí)行構(gòu)造函數(shù)
2個參數(shù)a,b
執(zhí)行構(gòu)造函數(shù)
3個參數(shù)a,b,c
看完上述內(nèi)容,你們掌握怎么在PHP中實現(xiàn)一個函數(shù)重載功能的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!