
UnsplashのSebastian Unrauが撮影した写真
マジックメソッドとはクラスに対して何らかの操作をした際に、PHPが自動で実行するメソッドです。
イベントのようなもので、トリガーが自動で設定されているだけで実行する処理自体は自由にコーディングできます。
マジックメソッドは「__construct」のようにアンダーバー2つで始まります。
マジックメソッドはメソッドなので、クラスの中で定義します。
任意の場所にphpのファイルを作成し、以下のように記述してブラウザで表示を確認してください。
class Test{
public function __construct(){
echo "<p>はじめてのマジックメソッド</p>";
}
}
$test = new Test(); //⇐インスタンス化
ブラウザに「はじめてのマジックメソッド」と表示されるかと思います。
「__construct()」はクラスをインスタンス化したタイミングで自動で実行するマジックメソッドです。
| メソッド名 | 実行のタイミング |
| __construct | インスタンスが生成された時 |
| __destruct | インスタンスが破棄もしくは処理中にexit()された時 |
| __call | アクセス不能メソッドが呼び出された時 |
| __callStatic | アクセス不能な静的メソッドが呼び出された時 |
| __get | アクセス不能プロパティにアクセスされた時 |
| __set | アクセス不能プロパティに値を代入された時 |
| __isset | アクセス不能プロパティがisset()またはemptyの引数で指定された時 |
| __unset | アクセス不能プロパティがunset()の引数で指定された時 |
| __sleep | selialize()の実行時 |
| __wakeup | unserialize()の実行時 |
| __toString | インスタンスが出力された時 |
| __invoke | インスタンスを関数として呼び出した時 |
| __set_state | インスタンスがvar_export()の引数に指定された時 |
| __clone | cloneキーワードでインスタンスのクローン作成時 ※ディープコピーの際に活躍する! |
| __debugInfo | インスタントがvar_dump()の引数に指定された時 |
※アクセス不能:privateもしくは定義されていないプロパティ、メソッドのこと
※マジックメソッドのほとんどはpublicで定義しないとエラーが発生します。
マジックメソッドに関するPHPの公式ページは以下です。
https://www.php.net/manual/ja/language.oop5.magic.php
マジックメソッドについては以上です。