您好我有疑问可以添加该功能的默认参数作为其他功能的结果吗?例如:
static function addParameter(){
return rand(10,100)
}
function doSomething($year=$this->addParameter()) or
function doSomething($year=class::addParameter())
我需要将实际年份和月份传递给我的功能。当我通过
功能($ month = 3,$ year = 2016)
它的工作原理,但我不想手写这个,但想使用函数或其他东西总是返回实际的月份和年份。
答案 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\FramesetFragment_jsp.java]
The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory
。
解决方法可能是检查参数是否为null并将其设置在函数中:
null