PHP5 マジックメソッド
PHP5 のマジックメソッドに関して調べたメモ
マジックメソッドとは
PHP5 でクラスを作成すると自動的に作成されているメソッドのこと。PHPマニュアルによると
PHP クラスにおける特殊関数の名前です。 これらの関数に関連する特別な機能を使用する場合を除き、 クラス内にこれらの名前を有する関数を作成してはいけません。
と説明されています。
getter や setter にあたるのがマジックメソッドの __get, __set です。
マジックメソッドの一覧
- __construct
- __destruct
- __call
- __callStatic
- __get
- __set
- __isset
- __unset
- __sleep
- __wakeup
- __toString
- __set_state
- __clone
__toString
クラスを echo , print で使用されたときのみコールされる。
__sleep, __wakeup
serialize() 関数でシリアル化する前に __sleep がコールされる。unserialize() 関数実行前に __wakeup がコールされる。
__get, __set
プロパティに値をセットするときに __set, プロパティの値を取得するときに __get がコールされる。ただしコールされるのはプロパティが private, protected のときのみ(参考:getter, setterマジックメソッド__get, __setの変な挙動 – ぎじゅっやさん)
追記
コメントよりご指摘いただきましたので修正します。
__get, __set はそのプロパティにアクセスできない、もしくは存在しないときに実行されます。
参考 URL
PHP: マジックメソッド – Manual
getter, setterマジックメソッド__get, __setの変な挙動 – ぎじゅっやさん
関連する投稿
3 comments
コメントをどうぞ
Additional comments powered by BackType
__get, __setはprivate, protectedのときというより、そのプロパティにアクセスできない、もしくは存在しないときに実行されます。
なので、その参考先での利用方法は間違っていることになります。
標準クラスであるstdClassは__get, __setの標準動作を利用しているクラスですので、連想配列のように扱えるということになります。
# stdClassは空クラスですので。
vector さん、ご教授いただきましてありがとうございます。
参考にして本文を修正しておきます。
2footprint…
…