php利用func_get_arg,func_get_args,func_num_args實現偽重載_PHP教程

來源:互聯網
上載者:User

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如何...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.