if($ this-> _hasParam('name')和if($ this-> _getParam('name'))之间有什么区别,Zend

时间:2010-03-17 05:50:14

标签: php zend-framework

我想检查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 个答案:

答案 0 :(得分:2)

$this->_hasParam('name')返回true,因为$this 具有名称为name的参数。

  

字段名称包含值(结果错误)

结果是正确的。 $this对象实际上有name字段 - 其值恰好为null的事实不是_hasParam函数的关注点。

使用_hasParam检查对象是否具有特定参数,并_getParam 获取该参数的值。

例如,如果要检查提交的表单是否具有名称为foo的属性,请使用_hasParam("foo")。要获得foo的值,请使用_getParam("foo")

答案 1 :(得分:1)

_hasParam()返回param是否存在,_getParam()返回实际值。不同之处在于,有几个值被认为等于null,即使它们确实存在,例如0'''。请使用===!==进行比较。