php
是否可能在python
中命名函數參數?一個例子的使用情況是:在PHP中命名的函數參數
function foo($username = "", $password = "", $timeout = 10) {
}
我要重寫$timeout
:
foo("", "", 3);
難看。我寧願做:
foo(timeout=3);
php
是否可能在python
中命名函數參數?一個例子的使用情況是:在PHP中命名的函數參數
function foo($username = "", $password = "", $timeout = 10) {
}
我要重寫$timeout
:
foo("", "", 3);
難看。我寧願做:
foo(timeout=3);
號,命名參數在PHP中是不可能的。從技術角度而言,當您致電foo($timeout=3)
時,它首先評估$timeout=3
,結果爲3
並將其作爲第一個參數傳遞給foo()
。 PHP強制執行參數順序,因此可比較的調用將需要爲foo("", "", $timeout=3)
。您有兩個其他選項:
func_get_args()
的參數或在PHP 5.6+中使用...
variable length arguments feature。根據參數的數量,您可以決定如何處理每個參數。很多JQuery函數都是這樣做的。這很容易,但對於那些調用你的函數的人來說可能會造成混淆,因爲它也不是自我記錄。而你的論點仍然沒有命名。請注意an RFC for named parameters仍在「正在討論中」。
老問題,但這裏有一些更多的信息。
正如其他答案中所述,PHP不直接支持命名參數。 VBA是另一種具有奢華的語言。
在PHP中,你可以使用一個相當合理的替代品。 PHP的數組處理是特別好,你可以使用一個關聯數組傳遞的參數數組,如下所示:
function foo($parms=array()) {
$username = parms['username']?:'…';
$password = parms['password']?:'…';
$timeout = parms['timeout']?:'…';
}
foo(array('timeout'=>10));
注意使用?:
運營商的,允許一個簡單的默認如果輸入數組元素沒有按」不存在。
不是光滑的,但命名參數還有另一個重要的作用:它們允許您使用大量的選項,而沒有過長的有序參數列表。
寫入功能的另一種方法是使用`提取功能:
function foo($parms=array()) {
$username = '…';
$password = '…';
$timeout = '…';
extract($parms,EXTR_IF_EXISTS);
}
這裏extract
函數將值到變量,但前提是他們已經被定義。這可以防止導入你不知道的變量。
答案是否定的,但我相信目前正在討論關於該主題的[RFC](https://wiki.php.net/rfc/named_params),但它不太可能超出討論階段...... 。我相信Facebook的[hh](https://t.co/I0RUiMMEsb)實現它,雖然我做了 –
,不起作用。 – Justin
對不起,我誤解你在問什麼。 –