流れるようなインターフェースをtraitで
ぼんやり思ったことのメモ。
たとえばDB接続なら
<?php $item = Item::select() ->from('item') ->join('category') ->on()->over(['category.status' => 'item.status']) ->like(['name' => 'my item']) ->order('code') ->offset(100) ->limit(10) ->get();
とかやりたい。
今までさくっと実装しようとすると、メソッド全部入りのDBクラスを作れば良かったんだけども、traitを使うと各メソッドを細切れで作っておいてtraitで
<?php class CalledSelect { use Join; use Where; use Order; use Get; use Offset; } class CalledFrom { use Join; use On; use Where; use Order; use Get; use Offset; } class CalledWhere { use Order; use Get; use Offset; }
のようにすると、選べるメソッドが制限されて書きやすいんじゃないかと。PHP7では戻り値も書けるようだし。( https://wiki.php.net/rfc/return_types )
まあ今はIDE使ってないし恩恵ないんだけども。