Al igual que su homónima de PHP, filtra el valor de diferentes variables, a partir de la definición de reglas.
$email = Filter::input(GET, 'email');
// -> '...'
$data = Filter::all(POST, [
'username' => 'text|max:48|required',
'password' => 'text|required'
]);
// -> ['username' => '...', 'password' => '...'];
En el primer ejemplo, del arreglo global $_GET, se filtra y devuelve la clave email.
En el segundo ejemplo, del arreglo global $_POST, se filtra y devuelven las claves username y password, en este caso, va a devolver un array con dichas claves.
Filtra el valor de una variable global, similar a filter_input.
public static Filter::( int $type, string $var_name, string|array $rules = '' ): mixed
Pueden ser las constantes INPUT_GET O INPUT_POST, o sus alias GET y POST.
El nombre de la variable que se desea recuperar.
Las reglas con las que se filtrará la variable. Puede ser un arreglo o una cadena con todas las reglas separadas por una barra vertical.
Filtra el valor de una variable, similar a filter_var.
public static Filter::(mixed $variable, string|array $rules = ''): mixed
La variable a filtrar.
Las reglas con las que se filtrará la variable. Puede ser un arreglo o una cadena con todas las reglas separadas por una barra vertical.
Filtra un arreglo o una variable global, similar a filter_input_array y filter_var_array, aunque no es exáctamente igual. Los cambios están en el tercer parámetro y en los valores devueltos.
public static Filter::all ( array|int $data, array $definition, bool $iterate = false ): ?array
Si el valor es una de las constantes GET o POST, las variables se buscarán en las variables globales. De lo contrario se viltrará el arreglo de variables.
Un arreglo que contiene en las claves el nombre de la variable, y en el valor, las reglas de filtrado.
Si es false, devuelve un arreglo igual que filter_input_array con el tercer parámetro activo, add_empty = true.
Si es true, devuelve un arreglo multidimensional con filas que contienen los pares key => value que han sido definidos o null en el caso de no hallar una fila para devolver.
Las reglas consisten en un filtro y modificadores. Los filtros dan los tipos de datos que deseamos obtener y los modificadores mejoran las espectativas.
La librería pretende que los valores devueltos sean siempre utilizables, sobre todo, para ser guardados en una base de datos. Por eso, si la regla falla, tendremos siempre un valor aceptable.
Devuelve un entero.
Es un alias de: int|min:0.
Devuelve un número con punto flotante.
Devuelve una cadena a la que se le aplica el filtro FILTER_FLAG_STRIP_LOW y las funciones htmlspecialchars y trim.
Devuelve una cadena a la que se le aplica el filtro FILTER_SANITIZE_SPECIAL_CHARS y las funciones nl2br y trim. El resultado es un valor seguro obtenido de un textarea.
Valida un email a través del filtro FILTER_VALIDATE_EMAIL.
Valida una url a través del filtro FILTER_VALIDATE_URL. Como valor, acepta una lista blanca de protocolos, por ejemplo: 'url:http,https'.
Valida un color. Como valor, acepta una lista de tipos de notaciones, por ejemplo: 'color:hex'.
Actualmente, los tipos de notaciones válidos son:
hex hexadecimal de 6 dígitos;hex+ hexadecimal con 3, 4, 6 u 8 dígitos;named colores nombrados de css;named+ a los colores nombrados se le agregan las palabras claves: currencolor y transparent.Sanitiza una cadena para ser utilizada como "slug" en una url.
Valida una valor boolean utilizando el filtro FILTER_VALIDATE_BOOLEAN.
Puede devolver un boolean o cualquier otro valor pasado en el filtro. Por ejemplo: bool:no/yes devolverá una cadena con cualquiera de estos valores. Otro ejemplo muy útil puede ser bool:0/1.
Validan fechas y horas reales. En caso de que falle, devolverá el valor null, que es un valor aceptable para los campos date de una base de datos.
Cargan uno o varios archivos. Devuelven SIEMPRE un objeto del tipo UploadedFileManager.
Pueden aceptar como valor, las extensiones permitidas. Por ejemplo: 'file:doc,docx'.
Utiliza el filtro FILTER_CALLBACK.
A partir de una cadena, intenta devolver un enum válido. El filtro requiere que se le pase como valor el enum que se desea utilizar, por ejemplo:
// array
$rule = ["enum" => Junco\Users\Enum\UserStatus::class];
// string
$rule = "enum:users.user_status";
Si se utiliza el modificador default sin un valor, buscará el valor por defecto en un método estático de igual nombre del Enum, por ejemplo:
$rule = "enum:users.user_status|default";
enum UserStatus {
case active;
static function default(): self
{
return self::active;
}
}
Valida una cadena json. Alternativamente, puede decodificar la cadena como un objeto o un array asociativo. Algunos ejemlos:
$rule = 'json:decode'; // json_decode($value)
$rule = 'json:decode_a'; // json_decode($value, true)
$rule = 'json:decode_a,2'; // json_decode($value, true, 2)
En caso de no colocar un filtro, se utilizará éste por defecto. Básicamente, no hace nada y equivale a FILTER_DEFAULT.
En los números, modifica los valores por defecto.
En los textos, verifica el tamaño de las cadenas.
En las fechas, si no se le coloca una fecha, tomará la fecha actual.
En los archivos, verifica su tamaño.
Modifica los valores por defecto del sistema. Cualquier nuevo valor, será parseado al tipo de filtro.
Devolverá un array. En caso de fallo, devolverá un array vacío. Si se le pasa el parámetro :first, tomará la entrada como un array, pero devolverá el primer valor del mismo.
Devolverá solo aquellos valores pasados como parámetros o false en caso de fallo.
Utilizará el valor de otra clave si su valor se evalúa como falso. En todos los casos, se utilizarón los valores de entrada.
$value = Filter::all([
'title' => '',
'slug' => 'slug|or_use:title'
]);
En el ejemplo, si no se ingresa un valor de slug, se utilizará el valor de title.
Devolverá la clave y su valor sólo si la clave pasada como parámetro tiene un valor que se representa como verdadero.
$value = Filter::all([
'accept' => 'bool',
'item_id' => 'id|only_if:accept|required'
]);
En el ejemplo, solo si se acepta, deberá solicitarse un item_id.
Igual que only_if, pero devolverá la clave y su valor, solo si la clave pasada como parámetro tiene un valor que se representa como falso.
La clave deberá tener un valor true o lanzará una excepción. En caso de ser un array, también comprobará que todos sus valores sean true.
Si el modificador tiene un valor "abort", en lugar de una excepción lanzará un error del sistema.
| FILTRO | DEVUELVE | SI FALLA | MODIFICADORES |
|---|---|---|---|
| Número | -- | ||
| int | integer | 0 | min, max, default, array, in, or_use, only_if, only_if_not, required |
| id | integer | 0 | Idem. |
| float | float | 0 | Idem. |
| Texto | -- | ||
| text | string | '' | min, max, default, array, in, or_use, only_if, only_if_not, required |
| multiline | string | '' | Idem. |
| slug | string | '' | min, max, default, array, or_use, only_if, only_if_not, required |
| Validación | -- | ||
| string | '' | min, max, default, array, in, or_use, only_if, only_if_not, required | |
| url | string | '' | Idem. |
| color | string | '' | Idem. |
| Boolean | -- | ||
| bool | mixed | ? | array, only_if, only_if_not, required |
| Fecha y hora | -- | ||
| date | string | null | min, max, default, array, or_use, only_if, only_if_not, required |
| datetime | string | null | Idem. |
| time | string | null | default, array, or_use, only_if, only_if_not, required |
| month | string | null | Idem. |
| Archivos | -- | ||
| file | UploadedFileManager | min, max, required | |
| files | UploadedFileManager | Idem. | |
| archive | UploadedArchiveManager | Idem. | |
| image | UploadedImageManager | Idem. | |
| images | UploadedImageManager | Idem. | |
| Otros | -- | ||
| callback | mixed | false | default, array, or_use, only_if, only_if_not, required |
| enum | EnumUnit | null | default, array, or_use, only_if, only_if_not, required |
| json | string | null | min, max, default, array, or_use, only_if, only_if_not, required |
| json:encode | stdClass | null | Idem. |
| json:encode_a | array | [] | Idem. |
| none | mixed | null | default, array, or_use, only_if, only_if_not, required |