Можно ли передать неустановленную переменную в функцию или иным образом проверить формы без isset ()? - PullRequest
0 голосов
/ 23 февраля 2011

У меня есть проект, который передает JSON между внешним и внутренним интерфейсом.Таким образом, внешний интерфейс PHP сгенерирует оператор { "command" : "getuser", "parameters" : { "userid" : 1 } } и отправит его бэкэнду.Затем серверная часть выполняет

if ($command == 'getuser') {
  validate($parameters['userid']);
  if ($this->valid) { <<get the user>> }
}

Проверка проверяет переменную и устанавливает $this->valid.При необходимости создается сообщение об ошибке.Я хочу создать сообщение об ошибке на случай, если внешний интерфейс перейдет в { "command" : "getuser", "parameters" : "" }.В этом случае $parameters['userid'] никогда не устанавливается, и validate () будет жаловаться, что ему передана неустановленная переменная.

Я предложил два решения.Первое решение - установить $parameters['userid'] = "unset" перед загрузкой в ​​JSON, а затем проверить его в валидаторе.Другое решение состоит в том, чтобы использовать

if (isset($parameters['userid'])) { 
  validate($parameters['userid']);
} 
else { 
  echo("Error"); } 

Было бы хорошо, если бы validate() мог самостоятельно определить, существует ли переменная.Есть ли более изящный способ, которым я должен делать вещи?

Ответы [ 3 ]

1 голос
/ 23 февраля 2011

Короче, нет. Ошибка возникает, когда вместо validate вызывается validate (), поэтому у нее нет возможности ее перехватить.

Похоже, что лучшим решением было бы иметь функцию validateUser (), которая передается во всей переменной $ parameters, а затем выполняет проверку, которую вы ищете, против 'user_id'. Это позволяет вам дополнительно отделить ваши проблемы (проверка, а не ответ).

0 голосов
/ 23 февраля 2011

Вам нужно будет передать $parameters в validate и позволить ему проверить, было ли userid, и если нет, создать сообщение об ошибке.

0 голосов
/ 23 февраля 2011

Если вам нужен этот стиль кода, вы можете передать arg в функцию по ссылке
Если нет, попробуйте использовать эту проверку ($ parameters, 'userid');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...