2012-02-10 9 views
0

可能性の重複:
PHP Readonly Properties?パブリックプロパティの変更を防ぐことができる唯一の方法はゲッターですか?

私はプロパティが公に見えるようにしたい:

echo $object->prop;

が、私は変更する必要はありません。

__getを使用するほかに、これを行うための他のオプションはありますか?私は考えることができる

+3

読み取り専用のプロパティをお探しですか? http://stackoverflow.com/questions/402215/php-readonly-properties –

+0

はい、そのようなものです。しかし、あなたがリンクしている解決策も__getを使用しています – Alex

+0

'__get'を使用したくない場合は、ゲッターメソッドが最適です。あなたは代わりに 'ArrayAccess'を実装することができますが、これは' __get'のようなものではありません – rdlowrey

答えて

0

は__get使用以外に、これを実現するために存在し、他のオプションはありますか?

いいえ、しかしそれには機能要求があります:https://bugs.php.net/bug.php?id=46506あなたはそれを重要視することができ、これが近い将来解決されることを願っています。

しかし、私はこの機能がオブジェクトにプロパティに格納されているような、多くの混乱を招くので近い将来にはないと思います。オブジェクトを参照するだけなので、オブジェクトを参照するだけで、 /プロパティ。

今のところ、すべてのプロパティに対して適切なゲッターを作成することは、読み取り専用にすることが最良の解決策であるようです。

0

その他の方法:

  1. __set()関数を使用して設定を無視。
  2. この変数はまったく使用しないでくださいが、getVal()関数を作成せず、setVal()関数も作成しないでください。

・ホープ、このことができます:)

+0

変数が外部から見える場合は#1は機能しません - 存在しない、または非公開のプロパティを設定しようとしたときにのみ '__set'が実行されます。 '__set'が動く場合、' __get'も必要です。 – cHao

関連する問題