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