В чем разница между if ($ this-> _hasParam ('name') и if ($ this-> _ getParam ('name')), Zend - PullRequest
0 голосов
/ 17 марта 2010

Я хочу проверить в Zend, содержит ли значение публикуемого значения формы 'name'. Для этого я использовал следующий код

один метод

if ($this->_getPatram('name') != null ) {
  echo 'field name contains value';
} else {
  echo 'field name contains  null value';
}

второй метод

if ($this->_hasParam('name')) {
 echo 'field name contains value';
} else {
  echo 'field name contains  null value';
}

вывод, при отправке формы с полем 'name' содержит нулевое значение

в первом методе

имя поля содержит нулевое значение (результат верный)

во втором методе

имя поля содержит значение (результат неверен)

Так в чем же разница между этими двумя? _hasParam и _getParam

Ответы [ 2 ]

2 голосов
/ 17 марта 2010

$this->_hasParam('name') возвращает true, потому что $this имеет параметр с именем name.

имя поля содержит значение (неверный результат)

Результат верный. На самом деле $this объект имеет поле name. Тот факт, что его значение равно null, не относится к функции _hasParam.

Используйте _hasParam, чтобы проверить, имеет ли объект определенный параметр или нет, и от _getParam до получите значение этого параметра.

Например, если вы хотите проверить, имеет ли отправленная форма свойство с именем foo, используйте _hasParam("foo"). Чтобы получить значение foo, используйте _getParam("foo")

1 голос
/ 17 марта 2010

_hasParam() возвращает, существует ли параметр, а _getParam() возвращает действительное значение. Разница заключается в том, что есть несколько значений, которые считаются равными null, даже если они существуют, например 0 или '' '. Для сравнения используйте === или !==.

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