php利用func_get_arg,func_get_args,func_num_args實現偽重載
偶爾在網上看到關於php的偽重載的問題,有點興趣便研究了一下。下面作者將說說php如何利用func_get_arg,func_get_args,func_num_args實現函數的偽重載問題。
首先說說方法重載的好處:
實現方法重載可以不用為了對不同的參數類型或參數個數,而寫多個函數。多個函數用同一個名字,但參數表,即參數的個數或(和)資料類型可以不同,調用的時候,雖然方法名字相同,但根據參數表可以自動調用對應的函數。如果我們使用reflector去查看微軟寫的.net的基底類別庫的話,我們可以發現他使用很多的方法重載,這樣我們在調用的時候,就不需要記那麼多的方法名稱,而是知道了方法的功能就可以直接的給他傳遞不同的參數,編譯器會明確的知道我們調用了哪一個方法。
但是在PHP中沒有函數重載這個概念,讓很多時候我們無法進行一些處理,甚至有時候不得不在函數後面定義好N個參數來解決相關問題,而php提供了幾個函數,比如:func_get_arg,func_get_args,func_num_args 卻可以直接解決相關問題。具體舉個範例程式碼如下:
');test(1);echo ('
');test(1, 2);echo ('
');test(1, 2, 3);// 這些只是在函數中的運用,其實最主要的還是在類中的運用// 如果這些用到類裡面我就不需要擔心建構函式是否有幾個參數了,不是嗎?// 類裡面的運用只舉一個簡單的例子class test{var $a = 0;var $b = 0;function test() {$argNum = func_num_args();$_arg = func_get_args();switch ($argNum) {case 1 :$this->test1($_arg[0]);break ;case 2 :$this->test2($_arg[0], $_arg[1]);break;default :$this->a = 0;$this->b = 1;break;}}function test1($a) {$this->a = $a;}function test2($a, $b) {$this->a = $a;$this->b = $b ;}}
您可能感興趣的文章
- php利用session_set_save_handler()函數將session儲存到MySQL資料庫中
- PHP 利用 Curl Functions 實現多線程抓取網頁和下載檔案
- 關於使用in_array() foreach array_search() 尋找數組是否包含時的效能對比
- php利用array_flip實現數組索引值交換去除數組重複值
- php利用filter函數驗證郵箱、url和ip地址的方法
- PHP中file_get_contents於curl效能效率比較
- 用PHP函數memory_get_usage擷取當前PHP記憶體消耗量以實現程式的效能最佳化
- php在數組中尋找某個值是否存在(in_array(),array_search(),array_key_exists())
http://www.bkjia.com/PHPjc/910766.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/910766.htmlTechArticlephp利用func_get_arg,func_get_args,func_num_args實現偽重載 偶爾在網上看到關於php的偽重載的問題,有點興趣便研究了一下。下面作者將說說php如何...