Суперглобальные значения как параметры в функциях php

Я обнаружил, что мне нужно установить значение по умолчанию для некоторого параметра метода из суперглобального, например:

public function some_function ($foo = $_POST['foo'], $bar = $_POST['bar']){
    //some action
}

это бросает меня

Ошибка синтаксического анализа: синтаксическая ошибка, неожиданный «$_POST» (T_VARIABLE) в строке /script.php (количество строк соответствует определению метода)

Если это нравится:

public function some_function ($foo = "{$_POST['foo']}", $bar = "{$_POST['bar']}")

Парсер выдает:

Parse error: syntax error, unexpected '"' 

Есть ли способ установить значения параметров метода по умолчанию из суперглобальных переменных PHP?


person RWS    schedule 20.02.2018    source источник
comment
Вам, вероятно, придется сделать что-то вроде значения по умолчанию для null и выполнить назначение в методе, если значение равно null.   -  person Nigel Ren    schedule 20.02.2018


Ответы (1)


Значения параметров по умолчанию должны быть постоянными выражениями, поэтому вы можете сделать что-то вроде этого:

public function some_function ($foo = null, $bar = null)
{
    if ($foo === null) {
        $foo = $_POST['foo'];
    }
    if ($bar === null) {
        $bar = $_POST['bar'];
    }
}

Если вы хотите получить фантазию, вы можете убедиться, что ваши значения по умолчанию имеют значения по умолчанию:

public function some_function ($foo = null, $bar = null)
{
    if ($foo === null) {
        $foo = $_POST['foo'] ?? 'default foo';
    }
    if ($bar === null) {
        $bar = $_POST['bar'] ?? 'default bar';
    }
}
person Alex Howansky    schedule 20.02.2018
comment
второй (причудливый) следует указать, что это эксклюзив для PHP 7 ;-) OP/другие могут не знать об этом типе троичного синтаксиса. - person Funk Forty Niner; 20.02.2018