在php中我们可以将默认参数传递给像这样的函数
function func_name(arg1,arg2=4,etc...) {
但据我了解,我们无法传递函数调用,因此这是非法的:
function func2_name(arg1,arg2=time(),etc...) {
所以当我想要做一个函数值时(想象一下像时间函数一样,值不能在运行时之前知道)我必须像这样做一些混乱的工作:
function func3_name(arg1,arg2=null,etc...) {
if(arg2==null) arg2 = time();
我想知道是否有人知道一种更好的方法,一种更简洁的方式将函数调用值作为默认参数传递给php?感谢。
在PHP语言设计中还有任何根本原因,它不允许函数调用作为默认参数(就像它在预处理中做了一些特殊的事情吗?)或者这会成为未来版本中的一个特性吗?
答案 0 :(得分:13)
嗯,简单的回答是,据我所知,没有更好的方法可以做到这一点。但是,您可以使用三元运算符使其看起来更整洁。
function func3_name(arg1,arg2=null,etc...) {
arg2 = (arg2==null ? time() : arg2);
}
答案 1 :(得分:2)
Connor 100%正确;但是,从PHP 7开始,您现在可以使用null coalesce operator。
即
$arg2 = $arg2 ?? time();
只是一种较短的,可以说更清晰的写作方式。