エンジニアの卵_level5

【毎日更新!】エンジニアの卵のブログです!技術以外も書いたり。

extendsの継承とは違う、平行継承『Trait』【20日目】

親子関係を結ばない、横継承

sssslide.com

PHPこんなんあるんですね。
普通の継承だと、extendsで、一個だけ親を決めるとかですけど、
これはuseで指定したら色々継承出来るやつです。

class Child extends Parent {
}

これが

class Child {
 use Trait;
}

みたいになります。

どんなときに使える?

親:人(歩ける)
子:剣士(剣を使える)
子:魔法使い(魔法を使える)

この時、剣と魔法を使えるクラスを作らなくてはならなくなった。

このときに既存の継承と違って、魔法と剣用のTraitを継承すればおしまいなのが良い。

何がいいの?

いろんなファイルが継承出来るのもそうですけど、
汎用的なものをまとめたクラスを継承するっていう流れをしなくていいのが良い。

私は今まで、Editとかshowとか汎用的なものをまとめたクラスを作って、
全部に継承させるみたいなことをしていたんですけど、
余計なメソッド継承や、オブジェクトの意味がわからなくなってしまう。

神クラスって呼ばれるみたいですけど、そういうのがなくなっていいってのが私の感想です。

実際はもっと深い話もある

今はプログラム作るときに、汎用クラスみたいなのを一つにしなくていいとかだけですが、
慣れると、テスト領域削減やクラスの持つ意味を明確にするとか
概念的なとこもすごく恩恵ありそう。

いろいろ勉強して、理解深めねば

日記

よし、一つネタ消化。まだまだネタあるし少しずつ消化せねば。

今日の運動

エアロバイク 1.5km