Передача неустановленных переменных в функции

Мой код:

function Check($Variable, $DefaultValue) { if(isset($Variable) && $Variable != "" && $Variable != NULL) { return $Variable; } else { return $DefaultValue; } } $a = Check(@$foo, false); $b = Check(@$bar, "Hello"); //$a now equals false because $foo was not set. //$b now equals "Hello" because $bar was not set. 
  1. Когда переменная не существует и передается функции (подавляющей ошибку), что фактически передается?
  2. Есть ли неопределенное поведение, которое может проявить эта функция?
  3. Есть ли лучший способ обернуть тестирование для существования переменных и предоставить значение по умолчанию из функции?
  4. Что проверяет isset() под капотом при тестировании переменной?

РЕДАКТИРОВАТЬ:

Значение по умолчанию должно быть определено пользователем. Иногда это будет число, иногда строка.