Есть ли способ упростить эту функцию с помощью say filter_input

function valueFromGetOrPost($parameter)
{
    $shvalue=NULL;
    if ($_GET[$parameter])
    {
        $shvalue=$_GET[$parameter];
    }
    else if (isset($_POST[$parameter]))

    {
        $shvalue=$_POST[$parameter];
    }
    return $shvalue;

}

сказать с помощью filter_input

В основном код проверяет, существует ли параметр в GET или POST. А затем верните значение параметра.

Я думаю, что это должно быть так распространено, это должно быть там какой-то встроенной функцией уже

3 ответа

  1. Использование $_REQUEST(документация).

    Ассоциативный массив, который по умолчанию содержит содержимое $_GET, $_POST и $_COOKIE.

    Таким образом, ваш код будет выглядеть как:

    function valueFromGetOrPost($parameter)
    {
        $shvalue=NULL;
        if ($_REQUEST[$parameter])
        {
            $shvalue=$_REQUEST[$parameter];
        }
        return $shvalue;
    
    }
    
  2. Вы можете использовать fast return, чтобы немного упростить его, я.e

    function valueFromGetOrPost($parameter){
    
        $shvalue=NULL;
    
        if (isset($_GET[$parameter])){
             return $_GET[$parameter];
        } else if (isset($_POST[$parameter])){
             return $_POST[$parameter];
        }
    }
    

    Или можно использовать тернарный оператор, так как вы возвращаете NULL в любом случае, если ни один из них не установлен:

    function valueFromGetOrPost($parameter){
    
     $shvalue = (isset($_GET[$parameter]) ? $_GET[$parameter] : $_POST[$parameter]);
    
     return $shvalue;
    
    }
    
  3. Вот мое предложение, используя функцию filter_input() :

    function valueFromGetOrPost($parameter)
    {
        $value = ($getValue = filter_input(INPUT_GET, $parameter))
            ? $getValue
            : filter_input(INPUT_POST, $parameter);
    
        return ($value) ? $value : NULL;
    }