PHP默认参数函数调用

hac*_*ist 12 php language-design function default-value

在php中,我们可以将默认参数传递给像这样的函数

function func_name(arg1,arg2=4,etc...) {
Run Code Online (Sandbox Code Playgroud)

但根据我的理解,我们无法通过函数调用,因此这是非法的:

function func2_name(arg1,arg2=time(),etc...) {
Run Code Online (Sandbox Code Playgroud)

所以,当我想要做一个函数值时(想象一下像时间函数一样,值不能在运行时之前知道)我必须像这样做一个混乱的工作:

function func3_name(arg1,arg2=null,etc...) {
    if(arg2==null) arg2 = time();
Run Code Online (Sandbox Code Playgroud)

我想知道是否有人知道更好的方法,一种更简洁的方式将函数调用值作为默认参数传递给php?谢谢.

在PHP语言设计中还有任何根本原因,它不允许函数调用作为默认参数(就像它在预处理中做了一些特殊的事情吗?)或者这可能成为未来版本中的一个特性?

Con*_*eet 13

嗯,根据我的知识,简短的回答是没有更好的方法来做到这一点.但是,您可以通过使用三元运算符使其看起来更整洁.

function func3_name(arg1,arg2=null,etc...) {
  arg2 = (arg2==null ? time() : arg2);
}
Run Code Online (Sandbox Code Playgroud)

  • 我认为你的意思是arg2 =(arg2 == null)?time():arg2; (2认同)