Aduana
Aduana es una pequeña librería para sanear y filtrar datos de forma segura y simple., (*1)
$format = [
"password" => [
"type" => "string",
"minLength" => 6,
"maxLength" => 20,
"required" => true,
"pattern" => "/[^\s\t\n]+/",
"message" => [
"minLength" => "tu password debe ser mayor a o igual a 6 caracteres",
"maxLength" => "tu password no debe ser mayor o igual a 20 caracteres",
"required" => "ingresar una password",
"pattern" => "tu password no debe contener saltos de línea ni espacios"
]
]
];
$shema = new Aduana\Shema($format);
$filter = $shema->filter($_POST)
Como notará el ejemplo anterior enseña una instancia de Aduana\Shema, este requiere un array que enseñe las propiedades a filtrar con su correspondiente formato, (*2)
Aduana\Shema::filter
el método filter permite filtrar y sanear datos en base a la instancia de Aduana\Shema, este siempre retornara 4 propiedades., (*3)
-
valid : define si sea ha procesado toda la estructura shema de forma correcta, sin valores inválidos.
-
dataValid : retorna las propiedades validadas.
-
dataInvalid : retorna las propiedades requeridas e inválidas.
-
countValid : es un contador de las propiedades válidas
-
countInvalid : es un contador de las propiedades invalidas
Se advierte que todas las propiedades inválidas y no requeridas simplemente se ignoran en el resultado de validación., (*4)
Aduana\Filter
Esta clase posee todos los filtros que posee por defecto Aduana., (*5)
Por defecto todos los métodos encargados de filtrar y sanear son métodos estáticos de 2 argumentos Aduana\Filter::$filter($config, $value)
., (*6)
-
$config : define la configuración del filtro.
-
$value: el valor a filtrar o sanear por el método.
A su vez todo filtro dentro y fuera de aduana debe retornar un objeto con 2 propiedades en el (object)["valid"=>boolean, "value"=>any ]
., (*7)
Aduana\Filter::type (string $config, $value)
Filtra un valor en base a su tipo($config) en comparación a su valor($value)., (*8)
type |
detail |
email, mail |
Define si es un email |
integer, int |
Define si es un número entero |
boolean, bool |
Define si es un booleano |
float, double |
Define si es un número flotante |
number, numberic |
Define si es un número |
null |
Define si es nulo |
infinite |
Define si es un número infinito |
finite |
Define si el número es finito |
json |
Define si es un json |
url |
Define si es una url |
date |
Define si es un fecha |
default |
Si no posee una definición de tipo usara la función gettype para verificar el tipo |
$shema = [
"user_email" => [
"type"=>"email"
]
];
Aduana\Filter::minLength (int $config, string $value)
Requiere un largo mínimo para validar el valor., (*9)
$shema = [
"password" => [
"minLength" => 6
]
];
La propiedad password dentro de $shema, debe ser mayor o igual a 6 caracteres., (*10)
Aduana\Filter::maxLength (int $config, string $value)
Requiere un largo máximo para validar el valor., (*11)
$shema = [
"password" => [
"maxLength" => 12
]
];
La propiedad password dentro de $shema, debe ser menor o igual a 12 caracteres., (*12)
Aduana\Filter::min (int $config, int $value)
Define un valor mínimo numerico., (*13)
$shema = [
"age" => [
"min" => 18
]
];
La propiedad age dentro de $shema, debe ser mayor o igual a 18., (*14)
Aduana\Filter::max (int $config, int $value)
Define un valor mínimo numerico., (*15)
$shema = [
"age" => [
"max" => 30
]
];
La propiedad age dentro de $shema debe ser menor o igual a 30., (*16)
aplica la función strip_tags al valor que apunte el cursor de schema., (*17)
$shema = [
"message_1" => [
"stripTags" => true
],
"message_2" => [
"stripTags" => "<p>"
]
];
Como notara puede usar un booleano en la definición de la propiedad stripTags para desactivar este filtro, de igual forma puede aplicar un string como parámetro secundario para strip_tags., (*18)
Aduana\Filter::pattern (string $config, string $value)
Valida si el string es válido al patrón entregado., (*19)
$shema = [
"tag" => [
"pattern"=>"/[a-z]+/"
]
];
La propiedad tag debe cumplir con el patron "/[a-z]+/"
aceptar su valor como valido., (*20)
Aduana\Filter::replace (array $config, string $value)
Permite reemplazar del valor entregado, caracteres a base de una búsqueda, esta búsqueda a su vez puede ser
una expresión regular o una simple cadena simple., (*21)
$shema = [
"tag_1" => [
"replace"=>["/[\.]+/", "_"]
],
"tag_2" => [
"replace"=>[".", "_"]
]
];
En las propiedades tag_1 y tag_2, se buscará el carácter . y se reemplazará por un carácter @, (*22)
Aduana\Filter::cleanSpace (bool $config, string $value)
Limpia un valor en su totalidad de espacios adicionales., (*23)
$shema = [
"message" => [
"cleanSpace"=>true
]
];
Aduana\Filter::option (array $config, $value)
Verifica que el valor entregado exista dentro de las opciones válidas., (*24)
$shema = [
"field_1" => [
"option" => [
1,2,3,4
]
]
];
Aduana\Filter::alias (array $config, $value)
Traduce el valor entregado a otro solo si este existe en el índice correspondiente., (*25)
$shema = [
"field_1" => [
"alias" => [
"a"=>1,
"b"=>2,
"c"=>3,
]
]
];
La propiedad field_1 pasará de poseer un valor a a 1., (*26)
Aduana\Filter::date (string $config, string $value)
Da formato de fecha al valor entregado, esta aplica la función date., (*27)
$shema = [
"hour" => [
"date" => "h:i:s A"
]
];
Aduana\Filter::htmlEncode (bool $config, string $value)
Aplica la función htmlentities al valor entregado., (*28)
$shema = [
"html" => [
"htmlEncode" => true
]
];
Aduana\Filter::htmlDecode (bool $config, string $value)
Aplica la función html_entity_decode al valor entregado., (*29)
$shema = [
"html" => [
"htmlDecode" => true
]
];
Aduana\Filter::equal ($config, $value)
Compara con la siguiente expresión $config === $value
., (*30)
$shema = [
"html" => [
"equal" => 10
]
];
Aduana\Filter::notEqual ($config, $value)
Compara con la siguiente expresión $config !== $value
., (*31)
$shema = [
"html" => [
"notEqual" => 10
]
];
Aplica la función number_format sobre el valor entregado., (*32)
$shema = [
"price" => [
"numberFormat" => [ 0 , ".",","]
]
];
Aduana\Filter::range (array $config, $value )
Utiliza la función range para generar un rango y luego verificar si el valor entregado existe dentro de ese rango., (*33)
$shema = [
"price" => [
"range" => ["a","b"]
]
];
Aduana\Filter::round (float $config, float $value)
Aplica la función round, sobre el valor entregado., (*34)
$shema = [
"price" => [
"round" => true
]
];
Aduana\Filter::force (string $config, $value)
fuerza el tipo de una variable, los tipos válidos son integer || int, float || double, string, boolean || bool, unset, (*35)
$shema = [
"price" => [
"force" => "integer"
]
];
Aplica la función quotemeta sobre el valor entregado., (*36)
$shema = [
"price" => [
"quotemeta" => true
]
];
Aduana\Filter::callback (callable $config, $value)
Ejecuta esta línea con los parámetros asignados call_user_func( $config, $value)
, Para que sea un filtro válido debe cumplir con el formato de retorno para filtros (object)["valid"=>boolean, "value"=>any ]
., (*37)
$shema = [
"price" => [
"callback" => function ($value) {
return (object) [
"valid" => true,
"value" => $value
];
}
]
];
Esta función siempre debe retornar una objeto con los siguientes parámetros (object)["valid"=>boolean, "value"=>any ]
, (*38)