2023.10.15
【PHP】マジックメソッド

UnsplashSebastian 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()の引数で指定された時
__sleepselialize()の実行時
__wakeupunserialize()の実行時
__toStringインスタンスが出力された時
__invokeインスタンスを関数として呼び出した時
__set_stateインスタンスがvar_export()の引数に指定された時
__clonecloneキーワードでインスタンスのクローン作成時
※ディープコピーの際に活躍する!
__debugInfoインスタントがvar_dump()の引数に指定された時

※アクセス不能:privateもしくは定義されていないプロパティ、メソッドのこと

※マジックメソッドのほとんどはpublicで定義しないとエラーが発生します。

マジックメソッドに関するPHPの公式ページは以下です。

 https://www.php.net/manual/ja/language.oop5.magic.php

マジックメソッドについては以上です。