function testFilterArray() { $arr = array('ololo', 'wow', 123); $this->assertEquals(array(2 => 123), Filter::Arr($arr, 'is_numeric'), 'Ключи массива сохраняются'); $f = function (&$var) { if ($var > 1) { return false; } if ($var > 0) { $var = 'ololo'; } return true; }; $arr = array(0, false, 1, 2, 3); $exp = array(0, false, 'ololo'); $this->assertEquals($exp, $res = Filter::Arr($arr, $f), 'Нулевые значения корректно обрабатываются'); $this->assertFalse($res[1], 'Типы не изменились'); }
/** Проверка по списку фильтров */ protected function validateFilters() { if (!empty($this->value) && !empty($this->filters)) { foreach ($this->filters as $filter) { if (is_array($this->value) && $this->isMultipleChoiceAllowed()) { $this->value = Filter::Arr($this->value, $filter, null); $bad = empty($this->value); } else { $bad = is_null(Filter::Value($this->value, $filter, null)); } if ($bad) { $this->addError(sprintf($this->tmpl_err_wrong, $this->getName())); return false; } } } return true; }
/** * Получить значение параметра в виде массива. * Если передан один параметр - он будет в массиве * $filter - callable или regexp, в результате будет оставлены только значения проходящие фильтр * $default - значение по-умолчанию, если значение не задано или не проходит фильтр */ public function getParameterAsArray($name, $filter = null, $default = array()) { if (!$this->hasParameter($name)) { return $default; } return Filter::Arr((array) $this->parameters[$name], $filter, $default); }