@@ -42,7 +42,7 @@ trait JsonQueriable
42
42
* map all conditions with methods
43
43
* @var array
44
44
*/
45
- protected $ _rulesMap = [
45
+ protected static $ _rulesMap = [
46
46
'= ' => 'equal ' ,
47
47
'eq ' => 'equal ' ,
48
48
'== ' => 'exactEqual ' ,
@@ -67,7 +67,6 @@ trait JsonQueriable
67
67
'endswith ' => 'endsWith ' ,
68
68
'match ' => 'match ' ,
69
69
'contains ' => 'contains ' ,
70
- 'macro ' => 'macro ' ,
71
70
];
72
71
73
72
@@ -269,10 +268,18 @@ protected function processConditions()
269
268
foreach ($ conditions as $ cond ) {
270
269
$ tmp = true ;
271
270
foreach ($ cond as $ rule ) {
272
- $ func = 'cond ' . ucfirst ($ this ->_rulesMap [$ rule ['condition ' ]]);
273
- if (method_exists ($ this , $ func )) {
271
+ $ call_func = [];
272
+ if (is_callable (self ::$ _rulesMap [$ rule ['condition ' ]])) {
273
+ $ func = self ::$ _rulesMap [$ rule ['condition ' ]];
274
+ $ call_func = $ func ;
275
+ } else {
276
+ $ func = 'cond ' . ucfirst (self ::$ _rulesMap [$ rule ['condition ' ]]);
277
+ $ call_func [] = $ this ;
278
+ $ call_func [] = $ func ;
279
+ }
280
+ if (is_callable ($ func ) || method_exists ($ this , $ func ) ) {
274
281
if (isset ($ val [$ rule ['key ' ]])) {
275
- $ return = call_user_func_array ([ $ this , $ func ] , [$ val [$ rule ['key ' ]], $ rule ['value ' ]]);
282
+ $ return = call_user_func_array ($ call_func , [$ val [$ rule ['key ' ]], $ rule ['value ' ]]);
276
283
}else {
277
284
$ return = false ;
278
285
}
@@ -469,173 +476,176 @@ public function whereContains($key, $value)
469
476
/**
470
477
* make macro for custom where clause
471
478
*
472
- * @param $key string
479
+ * @param $name string
473
480
* @param $fn callable
474
- * @return $this
481
+ * @return bool
475
482
*/
476
- public function macro ($ key , callable $ fn )
483
+ public static function macro ($ name , callable $ fn )
477
484
{
478
- $ this ->where ($ key , 'macro ' , $ fn );
485
+ if (!in_array ($ name , self ::$ _rulesMap )) {
486
+ self ::$ _rulesMap [$ name ] = $ fn ;
487
+ return true ;
488
+ }
479
489
480
- return $ this ;
490
+ return false ;
481
491
}
482
492
483
493
// condition methods
484
494
485
495
/**
486
496
* make Equal condition
487
497
*
488
- * @param $key string
489
- * @param $val mixed
498
+ * @param $val string
499
+ * @param $payable mixed
490
500
* @return bool
491
501
*/
492
- protected function condEqual ($ key , $ val )
502
+ protected function condEqual ($ val , $ payable )
493
503
{
494
- return $ key == $ val ;
504
+ return $ val == $ payable ;
495
505
}
496
506
497
507
/**
498
508
* make Exact Equal condition
499
509
*
500
- * @param $key string
501
- * @param $val mixed
510
+ * @param $val string
511
+ * @param $payable mixed
502
512
* @return bool
503
513
*/
504
- protected function condExactEqual ($ key , $ val )
514
+ protected function condExactEqual ($ val , $ payable )
505
515
{
506
- return $ key === $ val ;
516
+ return $ val === $ payable ;
507
517
}
508
518
509
519
/**
510
520
* make Not Equal condition
511
521
*
512
- * @param $key string
513
- * @param $val mixed
522
+ * @param $val string
523
+ * @param $payable mixed
514
524
* @return bool
515
525
*/
516
- protected function condNotEqual ($ key , $ val )
526
+ protected function condNotEqual ($ val , $ payable )
517
527
{
518
- return $ key != $ val ;
528
+ return $ val != $ payable ;
519
529
}
520
530
521
531
/**
522
532
* make Not Exact Equal condition
523
533
*
524
- * @param $key string
525
- * @param $val mixed
534
+ * @param $val string
535
+ * @param $payable mixed
526
536
* @return bool
527
537
*/
528
- protected function condNotExactEqual ($ key , $ val )
538
+ protected function condNotExactEqual ($ val , $ payable )
529
539
{
530
- return $ key !== $ val ;
540
+ return $ val !== $ payable ;
531
541
}
532
542
533
543
/**
534
544
* make Greater Than condition
535
545
*
536
- * @param $key string
537
- * @param $val mixed
546
+ * @param $val string
547
+ * @param $payable mixed
538
548
* @return bool
539
549
*/
540
- protected function condGreater ($ key , $ val )
550
+ protected function condGreater ($ val , $ payable )
541
551
{
542
- return $ key > $ val ;
552
+ return $ val > $ payable ;
543
553
}
544
554
545
555
/**
546
556
* make Less Than condition
547
557
*
548
- * @param $key string
549
- * @param $val mixed
558
+ * @param $val string
559
+ * @param $payable mixed
550
560
* @return bool
551
561
*/
552
- protected function condLess ($ key , $ val )
562
+ protected function condLess ($ val , $ payable )
553
563
{
554
- return $ key < $ val ;
564
+ return $ val < $ payable ;
555
565
}
556
566
557
567
/**
558
568
* make Greater Equal condition
559
569
*
560
- * @param $key string
561
- * @param $val mixed
570
+ * @param $val string
571
+ * @param $payable mixed
562
572
* @return bool
563
573
*/
564
- protected function condGreaterEqual ($ key , $ val )
574
+ protected function condGreaterEqual ($ val , $ payable )
565
575
{
566
- return $ key >= $ val ;
576
+ return $ val >= $ payable ;
567
577
}
568
578
569
579
/**
570
580
* make Less Equal condition
571
581
*
572
- * @param $key string
573
- * @param $val mixed
582
+ * @param $val string
583
+ * @param $payable mixed
574
584
* @return bool
575
585
*/
576
- protected function condLessEqual ($ key , $ val )
586
+ protected function condLessEqual ($ val , $ payable )
577
587
{
578
- return $ key <= $ val ;
588
+ return $ val <= $ payable ;
579
589
}
580
590
581
591
/**
582
592
* make In condition
583
593
*
584
- * @param $key string
585
- * @param $val mixed
594
+ * @param $val string
595
+ * @param $payable mixed
586
596
* @return bool
587
597
*/
588
- protected function condIn ($ key , $ val )
598
+ protected function condIn ($ val , $ payable )
589
599
{
590
- return (is_array ($ val ) && in_array ($ key , $ val ));
600
+ return (is_array ($ payable ) && in_array ($ val , $ payable ));
591
601
}
592
602
593
603
/**
594
604
* make Not In condition
595
605
*
596
- * @param $key string
597
- * @param $val mixed
606
+ * @param $val string
607
+ * @param $payable mixed
598
608
* @return bool
599
609
*/
600
- protected function condNotIn ($ key , $ val )
610
+ protected function condNotIn ($ val , $ payable )
601
611
{
602
- return (is_array ($ val ) && !in_array ($ key , $ val ));
612
+ return (is_array ($ val ) && !in_array ($ val , $ payable ));
603
613
}
604
614
605
615
/**
606
616
* make Null condition
607
617
*
608
- * @param $key string
609
- * @param $val mixed
618
+ * @param $val string
619
+ * @param $payable mixed
610
620
* @return bool
611
621
*/
612
- protected function condNull ($ key , $ val )
622
+ protected function condNull ($ val , $ payable )
613
623
{
614
- return (is_null ($ key ) || $ key == $ val );
624
+ return (is_null ($ val ) || $ val == $ payable );
615
625
}
616
626
617
627
/**
618
628
* make Not Null condition
619
629
*
620
- * @param $key string
621
- * @param $val mixed
630
+ * @param $val string
631
+ * @param $payable mixed
622
632
* @return bool
623
633
*/
624
- protected function condNotNull ($ key , $ val )
634
+ protected function condNotNull ($ val , $ payable )
625
635
{
626
- return (!is_null ($ key ) && $ key !== $ val );
636
+ return (!is_null ($ val ) && $ val !== $ payable );
627
637
}
628
638
629
639
/**
630
640
* make Starts With condition
631
641
*
632
- * @param $key string
633
- * @param $val mixed
642
+ * @param $val string
643
+ * @param $payable mixed
634
644
* @return bool
635
645
*/
636
- protected function condStartsWith ($ key , $ val )
646
+ protected function condStartsWith ($ val , $ payable )
637
647
{
638
- if (preg_match ("/^ $ val / " , $ key )) {
648
+ if (preg_match ("/^ $ payable / " , $ val )) {
639
649
return true ;
640
650
}
641
651
@@ -645,17 +655,17 @@ protected function condStartsWith($key, $val)
645
655
/**
646
656
* make Match condition
647
657
*
648
- * @param $key string
649
- * @param $val mixed
658
+ * @param $val string
659
+ * @param $payable mixed
650
660
* @return bool
651
661
*/
652
- protected function condMatch ($ key , $ val )
662
+ protected function condMatch ($ val , $ payable )
653
663
{
654
- $ val = rtrim ($ val , '$/ ' );
655
- $ val = ltrim ($ val , '/^ ' );
664
+ $ payable = rtrim ($ payable , '$/ ' );
665
+ $ payable = ltrim ($ payable , '/^ ' );
656
666
657
- $ pattern = '/^ ' .$ val .'$/ ' ;
658
- if (preg_match ($ pattern , $ key )) {
667
+ $ pattern = '/^ ' .$ payable .'$/ ' ;
668
+ if (preg_match ($ pattern , $ val )) {
659
669
return true ;
660
670
}
661
671
@@ -665,28 +675,12 @@ protected function condMatch($key, $val)
665
675
/**
666
676
* make Contains condition
667
677
*
668
- * @param $key string
669
- * @param $val mixed
670
- * @return bool
671
- */
672
- protected function condContains ($ key , $ val )
673
- {
674
- return (strpos ($ key , $ val ) !== false );
675
- }
676
-
677
- /**
678
- * make Macro condition
679
- *
680
- * @param $key string
681
- * @param $fn callable
678
+ * @param $val string
679
+ * @param $payable mixed
682
680
* @return bool
683
681
*/
684
- protected function condMacro ( $ key , callable $ fn )
682
+ protected function condContains ( $ val , $ payable )
685
683
{
686
- if (is_callable ($ fn )) {
687
- return $ fn ($ key );
688
- }
689
-
690
- return false ;
684
+ return (strpos ($ val , $ payable ) !== false );
691
685
}
692
686
}
0 commit comments