添加函数的默认参数作为其他函数的结果

时间:2016-03-21 13:12:35

标签: php function parameters yii2

您好我有疑问可以添加该功能的默认参数作为其他功能的结果吗?例如:

static function addParameter(){
return rand(10,100)
}

function doSomething($year=$this->addParameter()) or 
function doSomething($year=class::addParameter()) 

我需要将实际年份和月份传递给我的功能。当我通过

  

功能($ month = 3,$ year = 2016)

它的工作原理,但我不想手写这个,但想使用函数或其他东西总是返回实际的月份和年份。

3 个答案:

答案 0 :(得分:2)

简答:不,你不能。 http://php.net/manual/en/functions.arguments.php声明:

  

默认值必须是常量表达式,而不是(例如)变量,类成员或函数调用。

你可以使用默认空值(如果通常函数不带一个)并检查参数是否为null,然后从函数中获取值:

function testfun($testparam = null) {
    if ($testparam == null) $testparam = myclass::funToReturnParam();
    // Rest of function body
}

答案 1 :(得分:1)

哟可以像这样实现它

<?php
class Core {
    static function addParameter(){
       return rand(10,100);
    }
}

$core  = new Core();

function doSomething($rand){
    echo 'this is rand '.$rand;
    }

doSomething(Core::addParameter());

您可以根据需要更改功能定义。 希望它有所帮助:)

答案 2 :(得分:1)

来自PHP Manual(强调我的):

  

默认值必须是常量表达式,不是(例如)变量,类成员或函数调用。

因此只允许标量类型(布尔值,整数,字符串等),数组和this.org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [ViewerServlet] in context with path [/BIS] threw exception [Unable to compile class for JSP: An error occurred at line: [46] in the generated java file: [C:\Program Files\Apache Software Foundation\Tomcat 8.0\work\Catalina\localhost\BIS\org\apache\jsp\webcontent\birt\pages\layout\Fram‌​esetFragment_jsp.java] The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory

解决方法可能是检查参数是否为null并将其设置在函数中:

null