目前我在YII框架中工作,我创建了一个扩展CFormModel的类,
在该课程中,我重写了以下功能:
public function __get($name)
public function __set($name, $value)
我已经进行了以下检查以确保end_date和start_date不为空
if(!empty($this->end_date) AND !empty($this->start_date))
{
**/*Not Working*/**
/*Some Application Logic*/
}
但是它不能正常工作并且条件不满意。当我调试代码时,我发现$this->start_date
和$this->end_date
不为空。之后我将检查更改为以下内容:
if($this->end_date!='' AND $this->start_date!='')
{
**/*Working*/**
/*Some Application Logic*/
}
它按预期工作,但我仍然不明白为什么空功能无法正常工作。 是因为魔术方法还是有任何理由解决这个问题?
答案 0 :(得分:5)
您必须定义一个神奇的__isset()方法才能实现此目的。
public function __isset($name) {
return isset($this->data[$name]);
}
这将触发对isset()或empty()的无法访问属性的调用。