[英]adding default parameters of the function as result of other function
嗨,我有疑問是否可以將功能的默認參數添加為其他功能的結果? 例如:
static function addParameter(){
return rand(10,100)
}
function doSomething($year=$this->addParameter()) or
function doSomething($year=class::addParameter())
我需要將實際的年份和月份傳遞給我的職能。 當我通過時
函數($ month = 3,$ year = 2016)
然后工作,但我不想手寫,但想使用函數或總是返回實際月份和年份的東西。
簡短的回答:不,你不能。 http://php.net/manual/zh-CN/functions.arguments.php指出:
默認值必須是一個常量表達式,而不是(例如)變量,類成員或函數調用。
您可以使用默認的空值(如果正常情況下函數不使用一個)並檢查參數是否為空,然后從函數獲取值:
function testfun($testparam = null) {
if ($testparam == null) $testparam = myclass::funToReturnParam();
// Rest of function body
}
喲可以這樣實現
<?php
class Core {
static function addParameter(){
return rand(10,100);
}
}
$core = new Core();
function doSomething($rand){
echo 'this is rand '.$rand;
}
doSomething(Core::addParameter());
您可以根據需要更改功能定義。 希望能幫助到你 :)
從PHP手冊 (重點是我的):
默認值必須是一個常量表達式, 而不是 (例如)變量,類成員或函數調用。
因此,僅允許使用標量類型(布爾,整數,字符串等),數組和null
。
一種解決方法是檢查參數是否為null並在函數中進行設置:
function doSomething($year = null) {
if (!$year) {
$year = addParameter();
}
//actually do something
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.