静态方法中splat运算符的默认参数值

时间:2018-05-20 21:30:36

标签: php php-7.2

我正在尝试将一些php函数重写为标准类库作为静态方法,以便我的开发团队可以理解php函数。

以下是我目前的情况:

class StringUtil
{
    public static function sprintf ($format, $args = null, ... $_)
    {
        return sprintf($format,$args,$_);
    }
}

使用此方法声明,我应该能够正确使用splat operator

我的问题是如果没有参数使用超过$args,则splat operator应该失败,因为它声明为必需。

我正在寻找的是这样的,null值作为splat operator的默认参数传递:

class StringUtil
{
    public static function sprintf ($format, $args = null, ... $_ = null)
    {
        return sprintf($format,$args,$_);
    }
}

1 个答案:

答案 0 :(得分:1)

class StringUtil
{
    public static function sprintf($format)
    {
        $args = func_get_args();
        $fmt  = array_shift($args);

        return vsprintf($fmt, $args);
    }
}

UPD:

class StringUtil
{
    public static function sprintf($fmt)
    {
        return call_user_func_array('sprintf', func_get_args());
    }
}