2013-09-09 2 views
0

Я написал очень простую функцию, думая, что это будет только на выходе его параметр, если он существует:Условно Выходные переменные с помощью пользовательских функций PHP

function hurl($var,$default="") 
    { 
    if(isset($var) && !is_null($var) && gettype($var) != "object" && gettype($var) != "array") 
     return $var; 
    return $default; 
    } 

Таким образом, вы можете просто швырнуть ($ _ POST [ «переменная»]) и он не генерирует ошибку, если переменная POST не существует. Но я все еще получаю ошибку, как будто она пытается ссылаться на значение, которое не существует.

Затем я прочитал уведомление о isset() documentation:

Примечание: Поскольку это языковая конструкция, а не функция, она не может вызываться при помощи переменных функций.

Это связано меня Variable Functions, который гласил:

Переменные функции не будут работать с такими языковыми конструкциями, как эхо, печать, снята с охраны(), Исеть(), пустой(), включают в себя, требуют и тому подобное. Используйте wrapper functions, чтобы использовать любую из этих конструкций как переменные функции .

Как это сделать? Может ли кто-нибудь написать пример или более простой метод проверки без постоянной записи isset() и is_null() по всей странице? Будет ли попытка try catch работать в этом сценарии как-то?

ответ

0

Вы можете сделать что-то вроде этого:

function hurl($key, $value='') { 
    if (array_key_exists($key, $_POST)) { 
     if (!is_object($_POST[$key]) && !is_array($_POST[$key])) { 
      $value = $_POST[$key]; 
     } 
    } 
    return $value 
} 
+0

Мысль этого решения тоже, но не знаю, если RecoJohnson требовалось решение для всех видов переменных. – djot

Смежные вопросы