PHP中選擇性參數是不是必須在必選參數之後?

來源:互聯網
上載者:User
public function addHost($groupId, $nodeId = "node_0", $role = "master", $hostConfig){    //.....}

在我映象中一直都是必選參數定義在選擇性參數之前的,上面這段代碼是在 lotusphp 中看到的源碼,請問這樣定義如何使用呢?

回複內容:

public function addHost($groupId, $nodeId = "node_0", $role = "master", $hostConfig){    //.....}

在我映象中一直都是必選參數定義在選擇性參數之前的,上面這段代碼是在 lotusphp 中看到的源碼,請問這樣定義如何使用呢?

function test($a, $b = 3, $c = 4 ,$d) {    echo $a.$b.$c.$d;}echo test(4, "", "", 9);//列印結果//49echo test(4, null, null, 9);//列印結果//49

實際上 $b = 3, $c = 4 的預設值永遠不會設定成功的。
如果第四個參數是必選參數,那麼使用函數時必須有四個以上參數,此時預設參數無意義。

1. 你的印象不正確,必選參數和選擇性參數沒有順序的,不一定要把選擇性參數放在最後
2. lotusphp的addHost()方法設計成這樣,主要是因為group, node, role在概念層次上是漸進的,顛倒次序邏輯上不利於記憶,而config
3. 調用方法就是addHost("global_group", , , array("host"=> "127.0.0.1")),更多調用方法請參見lotusphp/unittest/Db/RightWayToUse.php

樓上正解,php中不講究預設參數的位置,但是調用的時候又不能隔開,如
function test($a,$b=3,$c=4 ,$d)
{
echo $a.$b.$c.$d;
}
echo test(1,2,3,5);//可以通過
echo test(1,,,5);//錯誤

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.