PHP 默认参数函数调用

Posted

技术标签:

【中文标题】PHP 默认参数函数调用【英文标题】:PHP default argument function call 【发布时间】:2012-06-14 17:30:07 【问题描述】:

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

【问题讨论】:

查看this similar question 的替代方案。 【参考方案1】:

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

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

【讨论】:

我认为你的意思是 arg2 = (arg2==null) ?时间():arg2;【参考方案2】:

康纳是 100% 正确的;但是,从 PHP 7 开始,您现在可以使用 null coalesce operator。

$arg2 = $arg2 ?? time();

只是一种更短、可以说更简洁的书写方式。

【讨论】:

以上是关于PHP 默认参数函数调用的主要内容,如果未能解决你的问题,请参考以下文章

php函数中,多个参数的情况下怎么使其中一个参数为默认值而其他的使用指定值

php学习笔记-默认参数

php 默认参数

如何在php中识别具有整数值的默认参数

自定义函数

使用默认参数调用异步函数作为参数检查处理同步的函数?