Author: Vojtěch Kohout
Beispiel #1
0
 /**
  * @param Fluent $statement
  * @param Filtering|null $filtering
  * @throws InvalidArgumentException
  */
 private function applyFiltering(Fluent $statement, Filtering $filtering)
 {
     $targetedArgs = $filtering->getTargetedArgs();
     foreach ($filtering->getFilters() as $filter) {
         $args = array($filter);
         if (!$filter instanceof Closure) {
             foreach (str_split($this->connection->getWiringSchema($filter)) as $autowiredArg) {
                 if ($autowiredArg === 'e') {
                     $args[] = $filtering->getEntity();
                 } elseif ($autowiredArg === 'p') {
                     $args[] = $filtering->getProperty();
                 }
             }
             if (isset($targetedArgs[$filter])) {
                 $args = array_merge($args, $targetedArgs[$filter]);
             }
         }
         $args = array_merge($args, $filtering->getArgs());
         call_user_func_array(array($statement, 'applyFilter'), $args);
     }
 }
Beispiel #2
0
 /**
  * @param Fluent $statement
  * @param Filtering|null $filtering
  * @return FilteringResult|null
  * @throws InvalidArgumentException
  */
 private function applyFiltering(Fluent $statement, Filtering $filtering)
 {
     $targetedArgs = $filtering->getTargetedArgs();
     foreach ($filtering->getFilters() as $filter) {
         $baseArgs = [];
         if (!$filter instanceof Closure) {
             foreach (str_split($this->connection->getWiringSchema($filter)) as $autowiredArg) {
                 if ($autowiredArg === 'e') {
                     $baseArgs[] = $filtering->getEntity();
                 } elseif ($autowiredArg === 'p') {
                     $baseArgs[] = $filtering->getProperty();
                 }
             }
             if (isset($targetedArgs[$filter])) {
                 $baseArgs = array_merge($baseArgs, $targetedArgs[$filter]);
             }
         }
         $result = call_user_func_array([$statement, 'applyFilter'], array_merge([$filter], $baseArgs, $filtering->getArgs()));
         if ($result instanceof FilteringResult) {
             return new FilteringResultDecorator($result, $baseArgs);
         }
     }
 }