/** * @param array|\Traversable $var * @param string $format * @return string */ public function walk($var, $format = '%s') { $out = ''; $args = $this->args(func_get_args(), 2); $what = is_string($var) ? $this->command->run('raw', $var) : $var; foreach (\Foil\arraize($what, $this->options['autoescape'], [], true) as $value) { $replacement = is_array($value) ? $value : [$value]; $out .= vsprintf($format, array_merge($replacement, $args)); } return $out; }
/** * @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; }