お手軽オブジェクト指向というコンセプトで、「検索パラメーター」はArticle
クラスのプロパティとして捉える場合は、下記のようにするとわかりやすいかもしれません。
検索パラメーター変数にstdClass
を作成して、プロパティとするか、プロパティの初期化をどこでするのか、オブジェクトとしないで連想配列とするかはクラスの設計次第だと思います。
php
1public function index(Request $request){
2 //Articleクラスの検索パラメーターのプロパティとする(初期化はArticleクラスでやったほうがいいかもしれません)
3 Article::$searchParams = new stdClass();
4
5 Article::$searchParams->id = $request->get("id", null);
6 Article::$searchParams->title = $request->get("title", null);
7 Article::$searchParams->body = $request->get("body", null);
8 Article::$searchParams->mail = $request->get("mail", null);
9 ...
10
11 $ret = Article::search();
12 dd($ret)
13}
php
1public static $searchParams;
2
3public static function search(){
4 return static::where("id", "=", static::$searchParams->id)->where.....たくさん -> get();
5}
Article
クラスに検索パラメーター設定用メソッドでセットする方法でもよいかもしれません。個人的には下記のようにスタティックメソッドを何度も呼ぶ方法はあまり好きではないです。
php
1public function index(Request $request){
2 //Articleクラスに検索パラメーター設定用メソッドでセット
3 Article::setSearchParams('id', $request->get("id", null));
4 Article::setSearchParams('title', $request->get("title", null));
5 Article::setSearchParams('body', $request->get("body", null));
6 Article::setSearchParams('mail', $request->get("mail", null));
7 ...
8
9 $ret = Article::search();
10 dd($ret)
11}
php
1protected static $searchParams;
2
3//検索パラメータープロパティ設定
4public static function setSearchParams($key, $value){
5 if (! is_object(static::$searchParams))
6 static::$searchParams = new stdClass();
7 }
8 static::$searchParams->{$key} = $value;
9}
10
11public static function search(){
12 return static::where("id", "=", static::$searchParams->id)->where.....たくさん -> get();
13}
連想配列にまとめる考え方と同じコンセプトで、オブジェクトを使いたい場合「検索パラメーター」変数にstdClass
のプロパティとして保存することも可能です。ループでセットしているのは単純な例として書きましたので、ひとつひとつセットしても良いと思います。
php
1public function index(Request $request){
2 $searchParams = new stdClass();
3
4 foreach(['id','title','body',...] as $key) {
5 $searchParams->{$key} = $request->get($key, null);
6 }
7
8 //検索パラメーター変数を渡す
9 $ret = Article::search($searchParams);
10 dd($ret)
11}
どうしても、Article::search()
メソッドの引数がよい場合はfunc_get_args()
でメソッド引数の配列を受け取ることができます。オブジェクト指向という観点からだといまいちだと思いますが、可変長の引数を簡単に取得できます。
php
1public static function search(){
2 list($id,$title,...) = func_get_args();
3 return static::where("id", "=", $id)->where.....たくさん -> get();
4}
どうするかは、ある程度クラス設計上の意味を考えたうえで、パフォーマンスとメンテナンス性を重視して決めると良いと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/13 12:03
2017/09/13 12:10