12

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

4

2 回答 2

13

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

function func3_name(arg1,arg2=null,etc...) {
  arg2 = (arg2==null ? time() : arg2);
}
于 2012-06-11T19:37:51.373 回答
2

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

IE

$arg2 = $arg2 ?? time();

只是一种更短,可以说更干净的方式来编写它。

于 2017-04-12T03:42:21.913 回答