Значение параметра по умолчанию для оператора splat в статическом методе - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь переписать некоторые функции 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 голосов
/ 24 мая 2018
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());
    }
}
...