簡體   English   中英

添加功能的默認參數作為其他功能的結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM