PHP默认参数函数调用

PHP默认参数函数调用,php,function,language-design,default-value,Php,Function,Language Design,Default Value,在php中,我们可以将默认参数传递给这样的函数 function func_name(arg1,arg2=4,etc...) { 但据我所知,我们无法传递函数调用,因此这是非法的: function func2_name(arg1,arg2=time(),etc...) { 因此,当我想做一个函数值(想象一下,就像时间函数一样,在运行之前无法知道该值),我必须做一些混乱的工作,比如: function func3_name(arg1,arg2=null,etc...) { if(ar

在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语言设计中不允许函数调用作为默认参数(比如它在预处理中做了什么特殊的事情?)还有什么根本原因吗?或者这会成为未来版本中的一项功能吗?

简单的回答是,据我所知,没有更好的方法可以做到这一点。但是,您可以使用三元运算符使其看起来更整洁

function func3_name(arg1,arg2=null,etc...) {
  arg2 = (arg2==null ? time() : arg2);
}

康纳是100%正确的;但是,从PHP7开始,您现在可以使用

i、 e

这是一种更短、更简洁的编写方法。

看看是否有其他替代方法。我想你的意思是arg2=(arg2==null)?时间():arg2;
$arg2 = $arg2 ?? time();