static property

仕事の時に見てたコードで、おや?と思ったものがあったので調べた。

 

クラス継承時に、親の持っている static property は子から参照しても同じ値が入っています。(static_property.php)
しかし、子クラスで同名の static property を宣言すると、親と子で別々の値が持てるようになります。(static_property_self.php)

理由はわりと単純で、子クラスで self::$foo と参照したときに、まず自分のクラスで定義を探す。なければ、 parent へ探しに行く。
なので、子クラスからも必ず同じ static property を参照したい場合は、self ではなく parent を指定しておくと良さそう。(static_property_parent.php)

 

コード見た方が早いと思うので、サンプル貼っておきますね。

object が同一かどうかはspl_object_hashで見ているhttp://php.ne ...