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 默认参数函数调用的主要内容,如果未能解决你的问题,请参考以下文章