2011-02-07 4 views
0

私のクラスの変数がいつ設定されるのかを監視する方法を探しています。例えばPHPオブザーバパターン/マジックセッター/プロキシブ

私は次のクラスがある場合:私は

class MyClass { 
    public $myVariable; 
} 

そしてどこかに私のコードで:

$class = new MyClass(); 
$class->myVariable = "value"; 

を私はmyVariable変数のセッターに「フック」にできるようにしたいと思います。ですから、私は$ class-> myVariable = "Value"を呼び出します。フィルターが新しい値が "Value"に等しいかどうかをチェックし、そうであればExceptionをスローします。

答えて

2

あなたの属性を通常どおりプライベートまたはプロテクトとして定義します。

次に、魔法の方法__set()を使用してアクセスをキャッチします。ただ実装いくつかの検証にプライベートプロパティの使用を強制

敬具

ラファエル

+0

(privateキーワードは、多かれ少なかれ上書きされる場合は特に)私の意見では正しくありません。それは作業上の回避策ですが、残念ながら私の必要性を満たしません。 – Peeter

+0

何ですか?それは標準的なOOPパラダイムです...私はあなたのポイントを取得しません – Raffael

+1

プロパティをプライベートとして設定し、後でクラス外からアクセスできるようにします。 – Peeter