当Magic Method __get&时,PHP函数为空无效__set在类中定义

时间:2012-12-16 13:18:29

标签: php yii magic-methods

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

它按预期工作,但我仍然不明白为什么空功能无法正常工作。 是因为魔术方法还是有任何理由解决这个问题?

1 个答案:

答案 0 :(得分:5)

您必须定义一个神奇的__isset()方法才能实现此目的。

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

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