2012-06-11 112 views
12

在PHP中,我们可以通过默认参数的函数,像这样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

这对我来说似乎并不混乱。 – Josh

+1

看看[这个类似的问题](http://stackoverflow.com/questions/8740687/php-function-as-parameter-default)的替代品。 – Quantastical

回答

13

那么,简单的答案是,没有更好的方法来做到这一点,据我所知。但是,你可以通过使用三元运算符使它看起来更整洁一些。

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

我想你的意思是arg2 =(arg2 == null)? time():arg2; –

2

Connor是100%正确的;但是,从PHP 7起,您现在可以使用null coalesce operator

$arg2 = $arg2 ?? time(); 

只是一个短,可以说是清洁的,这样写。