5

現在、私はYIIフレームワークで作業しており、CFormModelを拡張するクラスを作成しました。

そのクラスでは、次の関数をオーバーライドします。

public function __get($name)
public function __set($name, $value)

end_dateとstart_dateがnullでないことを確認するために、次のチェックを入れました

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 に答える