/** * @inheritdoc */ public function filter($filter, $input) { $filters = is_string($filter) ? explode('|', $filter) : array_values((array) $filter); if (func_num_args() > 2 && is_array(func_get_arg(2))) { $args = count($filters) === 1 ? [func_get_arg(2)] : array_filter(func_get_arg(2), 'is_array'); } else { $args = array_fill(0, count($filters), []); } if (count($args) !== count($filters)) { throw new InvalidArgumentException('Args array must contain as many sub-arrays as filters number.'); } array_walk($filters, function ($filter, $i, $args) use(&$input) { $input = $this->command->filter($filter, $input, $args[$i]); }, $args); return $input; }