2008年

PHP5 マジックメソッド このエントリーを含むはてなブックマーク

PHP Add comments

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の変な挙動 – ぎじゅっやさん

関連する投稿

2 Responses to “PHP5 マジックメソッド”

  1. vector Says:

    __get, __setはprivate, protectedのときというより、そのプロパティにアクセスできない、もしくは存在しないときに実行されます。

    なので、その参考先での利用方法は間違っていることになります。

    標準クラスであるstdClassは__get, __setの標準動作を利用しているクラスですので、連想配列のように扱えるということになります。
    # stdClassは空クラスですので。

  2. matsuura Says:

    vector さん、ご教授いただきましてありがとうございます。
    参考にして本文を修正しておきます。

Leave a Reply

Additional comments powered by BackType

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS ログイン