2017年9月21日木曜日

staticメソッドの呼び出しは、selfでなくstaticにしよう

その前に、「$this」はまだしも「$this->」で呼び出すのはやめましょう。
静的なのかインスタンスがあるのか、構造がわかりにくくなります。

selfは、古くららphpを使っていた人がよく使います。
staticは5.3から追加された遅延静的束縛機能です。

selfだと、クラスを継承した時にselfが継承クラスに置き換わらないので、非常に面倒です。
継承禁止のクラスでのみ使うべきです。
でないと、親クラスからコピペしまくり状態という、悲惨なコーディングになります。

statcは、簡単に言えば、呼び出されているクラスに置き換わります。
これがちょっと曲者でして、

selfで呼び出した先でstaticで呼び出すと、selfで呼び出されているクラスに置き換わります。

selfはコンパイル時に静的にクラス名が入り、staticは実行時に動的に入るイメージをすれば良いと思います。

まぁ、ややこしくなって不具合の元なので、staticで統一しましょうってことです。