またまたLaravel関連です。
今回やりたかったことは以下の様な感じです。
間違った実装例
いきなり間違ったとこから入りますが、最初以下の様なコードを書きました。
model 1
model 2
common
commonモデルをextendsして各モデルがextendsした共通処理を実行すりゃいーじゃん!ってのを
最初考えていました。
2つのmodelが共通のscope持ってる→共通のscopeを持つ基底modelを一個作る→2つのmodelがそれを継承する→でけた
— しょっさん (@syossan27) 2014, 9月 5
イケてる実装例
そんな中、Laravel答えるマンさんからこんな返答が。
@syossan27 trait で実装するのが便利でいいよ。継承いらないし、use すればどこにでも使えるので。
具体的な実装は論理削除で使われてる SoftDeletingTrait が参考になります。
— MATSUO Masaru (@localdisk) 2014, 9月 5
す、素晴らしい!
言われるまでtraitの存在がすっぽり頭から抜けてましたw
ってなわけで以下がアドバイスに則った実装例です。
model 1
model 2
common
これで出来ました!
こっちの方がもextends元のcommonクラスに依存しないので、イケてる実装ですね!
trait便利!
PHPはこれ! オブジェク ト指向PHPを初めて学ぶ人に
posted with amazlet at 14.09.05
(2013-08-24)
売り上げランキング: 70,399
売り上げランキング: 70,399