[PHP]staticを紐解く
静的メソッド(インスタンスの状態に左右されないメソッド)
メソッドやプロパティにstaticをつけると静的メソッド(staticメソッド)、静的プロパティ(staticプロパティ)になります。
どういうことかというと、
クラスのインスタンスを生成せずに(newしなくても)どこからでもそのメソッドにアクセスしたり利用できるようになる。
なので、インスタンスごとの状態(プロパティの値)に左右されることなく、引数の値に応じて一定の戻り値を返すだけの時は静的メソッドとして定義できます。
どんな時に使うのかというと
・プログラム全体で共通のメソッドを定義する場合
・プログラム全体で共通のプロパティを定義する場合
・複数クラス間で共通のプロパティを共有したい場合
静的メソッドからはインスタンスのプロパティにアクセスできないので、そのクラスがインスタンスごとの状態を持つべきではないという積極的な理由があるときにのみ、静的メソッドで定義するようにしましょう。
静的メソッドの定義方法
[アクセス修飾子] static function [メソッド名](引数)
静的メソッドのコール方法
自クラスがもつ場合
self::[静的メソッド名]
自クラス以外の静的メソッドの場合
[クラス名]::[静的メソッド名]
静的プロパティ
プログラム全体でクラスの一つの状態(プロパティの持つ値)を共有したい場合に使う
通常のインスタンスプロパティはインスタンス化しないと利用できないのでインスタンスごとに異なるプロパティ値を持つことになるますが、静的プロパティはインスタンスではなくクラスが持っているため、プログラム中のどこから読み書きしても同じ値が参照されます。インスタンス化なしで2つ以上のプログラム処理で同じプロパティ値を共有することができます。
まとめ
いまいちしっくりこないまま使っていましたが、今回この本の上巻を読んでみてやっと理解できました!今のところは重複する処理をfunctionにして複数の場面で使いたい時に静的メソッドにしています。
静的プロパティも含めて、使えそうな場面で取り入れ経験を積んで理解を深めたいです。
サポートしていただけるとこれからも続ける励みになります! 書籍購入などに使わせていただく予定です! 何卒よろしくお願いします^^