PHP默认参数函数调用

13

在 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语言设计上是否存在某些根本性原因导致它不允许函数调用作为默认参数(比如预处理时会执行一些特殊操作)?或者这种功能可能在未来版本中实现吗?


1
请参考这个类似的问题以获取替代方案。 - jeffjenx
2个回答

15

简短回答是:据我所知,没有更好的方法。然而,您可以通过使用三元运算符使其看起来更整洁。

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

2
我认为你的意思是 arg2 = (arg2==null) ? time() : arg2; - Devin Crossman

4

Connor是完全正确的;然而,从PHP 7开始,您现在可以使用null coalesce operator

$arg2 = $arg2 ?? time();

这只是一种更短、更简洁的编写方式,也许更易懂。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接