[英]PHP pass default argument to function
我有一個PHP函數,像這樣:
function($foo = 12345, $bar = false){}
我想做的是調用這個函數,使用$ foo傳遞的默認參數,但是$ bar設置為true,就像這樣(或多或少)
function(DEFAULT_VALUE, true);
我該怎么做? 如何在不知道該值的情況下將參數作為函數的默認值傳遞?
提前致謝!
這在PHP中本身不可能。 有一些解決方法,比如使用數組來傳遞所有參數而不是一行參數, 但它們有很大的缺點 。
我能想到的最佳手動解決方法是定義一個具有任意值的常量,該值不會與實際值發生沖突。 例如,對於永遠不能為-1
的參數:
define("DEFAULT_ARGUMENT", -1);
並測試:
function($foo = DEFAULT_ARGUMENT, $bar = false){}
反過來說:
function($bar = false, $foo = 12345){}
function(true);
通常的方法是if (is_null($foo))
函數將其替換為默認值。 使用null,空字符串等來“跳過”參數。 這就是大多數需要跳過參數的內置PHP函數的功能。
<?php
function($foo = null, $bar = false)
{
if (is_null($foo))
{
$foo = 12345;
}
}
?>
PHP無法做到這一點,所以你必須解決它。 由於您已經需要當前形式的函數,只需定義另一個:
function blah_foo($bar)
{
blah(12345, $bar);
}
function blah($foo = 12345, $bar = false) { }
我認為,最好根據最頻繁改變的論點排序,例如$bar
,我們把它放在第一位,
function foo( $bar = false, $foo = 12345){
// blah blah...
}
所以當你想將$bar
傳遞給true
,並將$foo
傳遞給12345
,你會這樣做,
foo(true);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.