5

目前我在 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*/
}

它按预期工作,但我仍然不明白为什么空函数无法正常工作。是因为魔术方法还是这个问题有什么原因?

4

1 回答 1

7

您必须定义一个神奇的__isset()方法才能使其工作。

public function __isset($name) {
    return isset($this->data[$name]);
}

这将触发对无法访问的属性的 isset() 或 empty() 调用。

于 2012-12-16T13:29:12.093 回答