Skip to content

Instantly share code, notes, and snippets.

@IgorDePaula
Created April 28, 2019 12:53
Show Gist options
  • Save IgorDePaula/cb8d9eb339ef02207cad9b3b901f3a1f to your computer and use it in GitHub Desktop.
Save IgorDePaula/cb8d9eb339ef02207cad9b3b901f3a1f to your computer and use it in GitHub Desktop.
<?php
/**
* Created by PhpStorm.
* User: igor
* Date: 01/05/17
* Time: 11:19
*/
//echo htmlentities('<a href="http://google.com">google<a>');
$dados = ['igor', '<a href="http://google.com">google<a>', '30', 30, 2.5, '2.5'];
interface Filter
{
public function filter($var);
}
class StringFilter implements Filter
{
public function canFilter($var){
return is_string($var);
}
public function filter($var)
{
return (string)$var;
}
}
class HtmlStringFilter implements Filter
{
public function canFilter($var){
return is_string($var);
}
public function filter($var)
{
return htmlentities($var);
}
}
class IntFilter implements Filter
{
public function canFilter($var){
return is_numeric($var) && is_int($var);
}
public function filter($var)
{
return (int)$var;
}
}
class FloatFilter implements Filter
{
public function canFilter($var){
return is_numeric($var) && is_float($var);
}
public function filter($var)
{
return (float)$var;
}
}
class Data
{
private $filters = [];
private $data = [];
public function addFilter(Filter $filter)
{
$this->filters[] = $filter;
}
/**
* @return array
*/
public function getFilters()
{
return $this->filters;
}
/**
* @return array
*/
public function getData()
{
return $this->data;
}
/**
* @param array $data
* @return Data
*/
public function setData($data)
{
$this->data = $data;
return $this;
}
public function proccessFilter()
{
$dados = $this->getData();
array_map(function ($filter) {
$data = [];
array_map(function ($var) use ($filter, $data) {
if ($filter->canFilter($var)) {
$data[] = $filter->filter($var);
//$i++;
}
else{
$data[] = $var;
//$i++;
}
}, $this->data);
}, $this->filters);
}
}
$d = new Data();
$d->addFilter(new StringFilter());
$d->addFilter(new HtmlStringFilter());
$d->addFilter(new IntFilter());
$d->setData($dados);
var_dump($d->getData());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment