laravelareyacore Laravel

model内にかくか
serviceにかくか
★Repository これだね 実行するsql外だしな感じ
https://bosnadev.com/2015/03/07/using-repository-pattern-in-laravel-5/

https://teratail.com/questions/30275
コントローラー間で重複するコードはLaravelではどのように書くのが正しいのでしょうか?
自作の共通クラスを作って使えばいいのでしょうか?

Serviceとしてロジックを分離

https://github.com/owl/owl/tree/master/app

http://qiita.com/takeokunnn/items/c119e576a6c04d37e098


リポジトリパターン 「モデル」をどのように扱うのか
アプリケーションコードの中で「モデル」をどのように扱うのか、という点です。 そこでリポジトリが登場します。

データベースからオブジェクトを検索しインスタンスを生成する、あるいは逆にインスタンスをデータベースに保存することを専門の責務にするクラスを設けます。これをリポジトリと呼びます。

2つの書籍で共通して挙げられているのは、コントローラーから直接モデルを扱うのではなく、リポジトリーとインターフェースを介してモデルを得ましょう、ということ。


laravelを使っていれば自然と使うことになるFacade.
FacadeとはもともとデザインパターンのFacadeパターンが有名ですけど、「シンプルな使い方を提供する」って感じの意味で名付けてるんでしょうね。
APIみたいなイメージでしょうか。

・参考
http://blog.booklook.jp/tag/laravel/
http://blog.comnect.jp.net/blog/117

Eloquentを継承したモデルを使うコード、ControllerとかCommandとかをテストするにはどうするか。
モデルで結合テストを書くのであれば、ここでのテストでまたモデルを検証するような動作は無駄ですね。
そこで、モデルをコントローラーに直接含めるのではなく、リポジトリーを使って間接的に含めれば、テスト時に交換可能になる、というわけです。
(実はよく読めばここらへんまでの話はLaravel Testing Decodedにも書いてあった

http://blog.comnect.jp.net/blog/131





PHP5.4から使用できる新機能で、トレイトは、PHP のような単一継承言語でコードを再利用するための仕組みのひとつです。

トレイトは、単一継承の制約を減らすために作られたもので、 いくつかのメソッド群を異なるクラス階層にある独立したクラスで再利用できるようにします。

トレイトとクラスを組み合わせた構文は複雑さを軽減させてくれ、 多重継承や Mixin に関連するありがちな問題を回避することもできます。

トレイトはクラスと似ていますが、トレイトは単にいくつかの機能をまとめるためだけのものです。

トレイト自身のインスタンスを作成することはできません。 昔ながらの継承に機能を加えて、振る舞いを水平方向で構成できるようになります。

つまり、継承しなくてもクラスのメンバーに追加できるようになります。