{"id":18358849,"url":"https://github.com/uppercod/aduanaphp","last_synced_at":"2025-04-10T03:04:16.877Z","repository":{"id":57075871,"uuid":"129014726","full_name":"UpperCod/AduanaPhp","owner":"UpperCod","description":"A small library to clean and filter data safely and easily.","archived":false,"fork":false,"pushed_at":"2018-04-11T18:17:29.000Z","size":12,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-15T18:36:40.480Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/UpperCod.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-04-11T01:14:23.000Z","updated_at":"2018-04-11T18:15:40.000Z","dependencies_parsed_at":"2022-08-24T14:40:38.481Z","dependency_job_id":null,"html_url":"https://github.com/UpperCod/AduanaPhp","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UpperCod%2FAduanaPhp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UpperCod%2FAduanaPhp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UpperCod%2FAduanaPhp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UpperCod%2FAduanaPhp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/UpperCod","download_url":"https://codeload.github.com/UpperCod/AduanaPhp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248148228,"owners_count":21055547,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T22:19:44.010Z","updated_at":"2025-04-10T03:04:16.814Z","avatar_url":"https://github.com/UpperCod.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Aduana\n\nAduana es una pequeña librería para sanear y filtrar datos de forma segura y simple.\n\n```php\n\n$format = [\n   \"password\" =\u003e [\n       \"type\" =\u003e \"string\",\n       \"minLength\" =\u003e 6,\n       \"maxLength\" =\u003e 20,\n       \"required\" =\u003e true,\n       \"pattern\" =\u003e \"/[^\\s\\t\\n]+/\",\n       \"message\" =\u003e [\n           \"minLength\" =\u003e \"tu password debe ser mayor a o igual a 6 caracteres\",\n           \"maxLength\" =\u003e \"tu password no debe ser mayor o igual a 20 caracteres\",\n           \"required\" =\u003e \"ingresar una password\",\n           \"pattern\" =\u003e \"tu password no debe contener saltos de línea ni espacios\"\n       ]\n   ]\n];\n\n$shema = new Aduana\\Shema($format);\n\n$filter = $shema-\u003efilter($_POST)\n\n```\n\nComo 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\n\n### Aduana\\Shema::filter\n\nel método **filter** permite filtrar y sanear datos en base a la instancia de **Aduana\\Shema**, este siempre retornara 4 propiedades.\n\n* **valid** : define si sea ha procesado toda la estructura shema de forma correcta, sin valores inválidos.\n* **dataValid** : retorna las propiedades validadas.\n* **dataInvalid** : retorna las propiedades requeridas e inválidas.\n* **countValid** : es un contador de las propiedades válidas\n* **countInvalid** : es un contador de las propiedades invalidas\n\n\u003e Se advierte que todas las propiedades inválidas y no requeridas simplemente se ignoran en el resultado de validación.\n\n## Aduana\\Filter\n\nEsta clase posee todos los filtros que posee por defecto **Aduana**.\n\nPor defecto todos los métodos encargados de filtrar y sanear son métodos estáticos de 2 argumentos `Aduana\\Filter::$filter($config, $value)`.\n\n1. **$config** : define la configuración del filtro.\n2. **$value**: el valor a filtrar o sanear por el método.\n\nA su vez todo filtro dentro y fuera de aduana debe retornar un objeto con 2 propiedades en el `(object)[\"valid\"=\u003eboolean, \"value\"=\u003eany ]`.\n\n### Aduana\\Filter::type (string $config, $value)\n\nFiltra un valor en base a su tipo($config) en comparación a su valor($value).\n\n|type|detail|\n|----|------|\n|**email, mail**| Define si es un email  |\n|**integer, int**| Define si es un número entero  |\n|**boolean, bool**| Define si es un booleano  |\n|**float, double**| Define si es un número flotante  |\n|**number, numberic**| Define si es un número |\n|**null**| Define si es nulo |\n|**infinite**| Define si es un número infinito |\n|**finite**|  Define si el número es finito |\n|**json**| Define si es un json |\n|**url**| Define si es una url |\n|**date**| Define si es un fecha |\n|**default**| Si no posee una definición de tipo usara la función gettype para verificar el tipo |\n\n```php\n$shema = [\n   \"user_email\" =\u003e [\n       \"type\"=\u003e\"email\"\n   ]\n];\n```\n\n### Aduana\\Filter::minLength (int $config, string $value)\n\nRequiere un largo mínimo para validar el valor.\n\n```php\n$shema = [\n   \"password\" =\u003e [\n       \"minLength\" =\u003e 6\n   ]\n];\n```\n\n\u003e La propiedad **password** dentro de **$shema**, debe ser mayor o igual a 6 caracteres.\n\n### Aduana\\Filter::maxLength (int $config, string $value)\n\nRequiere un largo máximo para validar el valor.\n\n```php\n$shema = [\n   \"password\" =\u003e [\n       \"maxLength\" =\u003e 12\n   ]\n];\n```\n\n\u003e La propiedad **password** dentro de **$shema**, debe ser menor o igual a 12 caracteres.\n\n### Aduana\\Filter::min (int $config, int $value)\n\nDefine un valor mínimo numerico.\n\n```php\n$shema = [\n   \"age\" =\u003e [\n       \"min\" =\u003e 18\n   ]\n];\n```\n\n\u003e La propiedad **age** dentro de **$shema**, debe ser mayor o igual a 18.\n\n### Aduana\\Filter::max (int $config, int $value)\n\nDefine un valor mínimo numerico.\n\n```php\n$shema = [\n   \"age\" =\u003e [\n       \"max\" =\u003e 30\n   ]\n];\n```\n\n\u003e La propiedad **age** dentro de **$shema** debe ser menor o igual a 30.\n\n### Aduana\\Filter::stripTags ($config, string $value)\n\naplica la función strip_tags al valor que apunte el cursor de schema.\n\n```php\n$shema = [\n   \"message_1\" =\u003e [\n       \"stripTags\" =\u003e true\n   ],\n   \"message_2\" =\u003e [\n       \"stripTags\" =\u003e \"\u003cp\u003e\"\n   ]\n];\n```\n\n\u003e 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**.\n\n### Aduana\\Filter::pattern (string $config, string $value)\n\nValida si el string es válido al patrón entregado.\n\n```php\n$shema = [\n   \"tag\" =\u003e [\n       \"pattern\"=\u003e\"/[a-z]+/\"\n   ]\n];\n```\n\u003e La propiedad **tag** debe cumplir con el patron `\"/[a-z]+/\"` aceptar su valor como valido.\n\n### Aduana\\Filter::replace (array $config, string $value)\n\nPermite reemplazar del valor entregado, caracteres a base de una búsqueda, esta búsqueda a su vez puede ser\nuna expresión regular o una simple cadena simple.\n\n```php\n$shema = [\n   \"tag_1\" =\u003e [\n       \"replace\"=\u003e[\"/[\\.]+/\", \"_\"]\n   ],\n   \"tag_2\" =\u003e [\n       \"replace\"=\u003e[\".\", \"_\"]\n   ]\n];\n```\n\u003e En las propiedades **tag_1** y **tag_2**, se buscará el carácter **.** y se reemplazará por un carácter **@**\n\n### Aduana\\Filter::cleanSpace (bool $config, string $value)\n\nLimpia un valor en su totalidad de espacios adicionales.\n\n```php\n$shema = [\n   \"message\" =\u003e [\n       \"cleanSpace\"=\u003etrue\n   ]\n];\n```\n\n### Aduana\\Filter::option (array $config, $value)\n\nVerifica que el valor entregado exista dentro de las opciones válidas.\n\n```php\n$shema = [\n   \"field_1\" =\u003e [\n       \"option\" =\u003e [\n           1,2,3,4\n       ]\n   ]\n];\n```\n\n### Aduana\\Filter::alias (array $config, $value)\n\nTraduce el valor entregado a otro solo si este existe en el índice correspondiente.\n\n```php\n$shema = [\n   \"field_1\" =\u003e [\n       \"alias\" =\u003e [\n           \"a\"=\u003e1,\n           \"b\"=\u003e2,\n           \"c\"=\u003e3,\n       ]\n   ]\n];\n```\n\u003e La propiedad **field_1** pasará de poseer un valor **a** a **1**.\n\n### Aduana\\Filter::date (string $config, string $value)\n\nDa formato de fecha al valor entregado, esta aplica la función **date**.\n\n```php\n$shema = [\n   \"hour\" =\u003e [\n       \"date\" =\u003e \"h:i:s A\"\n   ]\n];\n```\n\n### Aduana\\Filter::htmlEncode (bool $config, string $value)\n\nAplica la función **htmlentities** al valor entregado.\n\n```php\n$shema = [\n   \"html\" =\u003e [\n       \"htmlEncode\" =\u003e true\n   ]\n];\n```\n\n### Aduana\\Filter::htmlDecode (bool $config, string $value)\n\nAplica la función **html_entity_decode** al valor entregado.\n\n```php\n$shema = [\n   \"html\" =\u003e [\n       \"htmlDecode\" =\u003e true\n   ]\n];\n```\n\n### Aduana\\Filter::equal ($config, $value)\n\nCompara con la siguiente expresión `$config === $value`.\n\n```php\n$shema = [\n   \"html\" =\u003e [\n       \"equal\" =\u003e 10\n   ]\n];\n```\n\n### Aduana\\Filter::notEqual ($config, $value)\n\nCompara con la siguiente expresión `$config !== $value`.\n\n```php\n$shema = [\n   \"html\" =\u003e [\n       \"notEqual\" =\u003e 10\n   ]\n];\n```\n\n\n### Aduana\\Filter::numberFormat (array $config, float $value)\n\nAplica la función **number_format** sobre el valor entregado.\n\n```php\n$shema = [\n   \"price\" =\u003e [\n       \"numberFormat\" =\u003e [ 0 , \".\",\",\"]\n   ]\n];\n```\n\n### Aduana\\Filter::range (array $config, $value )\n\nUtiliza la función **range** para generar un rango y luego verificar si el valor entregado existe dentro de ese rango.\n\n```php\n$shema = [\n   \"price\" =\u003e [\n       \"range\" =\u003e [\"a\",\"b\"]\n   ]\n];\n```\n### Aduana\\Filter::round (float $config, float $value)\n\nAplica la función **round**, sobre el valor entregado.\n\n```php\n$shema = [\n   \"price\" =\u003e [\n       \"round\" =\u003e true\n   ]\n];\n```\n\n### Aduana\\Filter::force (string $config, $value)\n\nfuerza el tipo de una variable, los tipos válidos son **integer || int, float || double, string, boolean || bool, unset**\n\n```php\n$shema = [\n   \"price\" =\u003e [\n       \"force\" =\u003e \"integer\"\n   ]\n];\n```\n\n### Aduana\\Filter::quotemeta (bool $config, string $value)\n\nAplica la función **quotemeta** sobre el valor entregado.\n\n```php\n$shema = [\n   \"price\" =\u003e [\n       \"quotemeta\" =\u003e true\n   ]\n];\n```\n\n### Aduana\\Filter::callback (callable $config, $value)\n\nEjecuta 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\"=\u003eboolean, \"value\"=\u003eany ]`.\n```php\n$shema = [\n   \"price\" =\u003e [\n       \"callback\" =\u003e function ($value) {\n           return (object) [\n               \"valid\" =\u003e true,\n               \"value\" =\u003e $value\n           ];\n       }\n   ]\n];\n```\n\n\u003e Esta función siempre debe retornar una objeto con los siguientes parámetros `(object)[\"valid\"=\u003eboolean, \"value\"=\u003eany ]`","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuppercod%2Faduanaphp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuppercod%2Faduanaphp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuppercod%2Faduanaphp/lists"}