PHP默认参数函数调用

时间:2012-06-11 19:35:14

标签: 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(arg2==null) arg2 = time();

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

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

2 个答案:

答案 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();

只是一种较短的,可以说更清晰的写作方式。