Я создал класс с именем Sanitize.
Я использую функцию filter_var для фильтрации и очистки данных. Я создал третий параметр filter_var () из массива: $ options, который похож на следующий код:
private $options = array('typeOfData' => array('options' => array(), 'flags' => array()));
Я могу построить массив с правильными параметрами, но этот метод не будет работать. Я хотел только одну из опций или флагов, это не было бы проблемой. К сожалению, я хотел бы передать несколько констант опций или флагов в filter_var.
Для флагов возможно ли получить желаемый результат, как FLAG1 | Flag2?
Если нет, я должен использовать filter_var, с переключателем использовать filter_var в зависимости от требуемых флагов?
Это текущий код с использованием filter_var: filter_var($value, $this->filters[$typeOFData], $this->currentOptions);
Класс, который Sanitizes на основе типа:
class Sanitize{
private $data;
private $filteredData;
private $options;
private $typeof;
private $filters;
function __contruct($data){
$this->typeof = gettype($data);
$this->data = $data;
switch ($this->typeof){
case "integer":
$this->options = array( /* array of options for integer type*/ );
$this->filters = array( /*array of all filters you want to use on integers*/ )
break;
case "string":
//....
}
private function getSanitized(){
$filtersNum = count($this->filters);
for($x=0;$x<$filtersNum;$x++){
if(allowsOptions($this->filters[$x])){ $options = $this->options; }else{$options = null;}
$this->filteredData = filter_var($this->data, $this->filters[$x], $options)
}
}
private function allowsOptions($filter){
/* all your code to check*/
return true or false
}
}
Я надеюсь, что это поможет, если нет, дайте мне знать.
Других решений пока нет …