uppercod/aduana

一个用于安全且简单地清理和过滤数据的库。

0.0.3 2018-04-11 18:15 UTC

This package is not auto-updated.

Last update: 2024-09-20 20:46:47 UTC


README

Aduana 是一个用于安全且简单地清洗和过滤数据的库。

$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)

如前例所示,它展示了 Aduana\Shema 的一个实例,这需要一个数组来指定要过滤的属性及其对应的格式

Aduana\Shema::filter

该方法 filter 允许根据 Aduana\Shema 实例来过滤和清洗数据,它总是会返回 4 个属性。

  • valid : 定义是否已正确处理整个 shema 结构,没有无效值。
  • dataValid : 返回验证过的属性。
  • dataInvalid : 返回所需的无效属性。
  • countValid : 是有效属性的计数器。
  • countInvalid : 是无效属性的计数器。

请注意,所有无效且非必需的属性在验证结果中都将被忽略。

Aduana\Filter

这个类具有默认的 Aduana 所有的过滤器。

默认情况下,所有负责过滤和清洗的方法都是静态的,接受两个参数 Aduana\Filter::$filter($config, $value)

  1. $config : 定义过滤器的配置。
  2. $value: 要通过方法过滤或清洗的值。

此外,aduana 内部和外部所有的过滤器都必须返回一个对象,该对象包含两个属性 (object)["valid"=>boolean, "value"=>any ]

Aduana\Filter::type (string $config, $value)

基于其类型($config)和值($value)过滤值。

$shema = [
   "user_email" => [
       "type"=>"email"
   ]
];

Aduana\Filter::minLength (int $config, string $value)

需要指定一个最小长度来验证值。

$shema = [
   "password" => [
       "minLength" => 6
   ]
];

$shema 中的 password 属性,其长度必须大于或等于 6 个字符。

Aduana\Filter::maxLength (int $config, string $value)

需要指定一个最大长度来验证值。

$shema = [
   "password" => [
       "maxLength" => 12
   ]
];

$shema 中的 password 属性,其长度必须小于或等于 12 个字符。

Aduana\Filter::min (int $config, int $value)

定义一个数值最小值。

$shema = [
   "age" => [
       "min" => 18
   ]
];

$shema 中的 age 属性,其值必须大于或等于 18。

Aduana\Filter::max (int $config, int $value)

定义一个数值最小值。

$shema = [
   "age" => [
       "max" => 30
   ]
];

$shema 中的 age 属性,其值必须小于或等于 30。

Aduana\Filter::stripTags ($config, string $value)

对指向 schema 指针的值应用 strip_tags 函数。

$shema = [
   "message_1" => [
       "stripTags" => true
   ],
   "message_2" => [
       "stripTags" => "<p>"
   ]
];

如你所见,可以在 stripTags 属性的定义中使用一个 boolean 来禁用此过滤器,同样也可以使用一个 string 作为 strip_tags 的次要参数。

Aduana\Filter::pattern (string $config, string $value)

验证字符串是否符合提供的模式。

$shema = [
   "tag" => [
       "pattern"=>"/[a-z]+/"
   ]
];

tag 属性必须符合模式 "/[a-z]+/" 以接受其值为有效。

Aduana\Filter::replace (array $config, string $value)

允许根据提供的搜索替换值中的字符,这个搜索可以是正则表达式或简单字符串。

$shema = [
   "tag_1" => [
       "replace"=>["/[\.]+/", "_"]
   ],
   "tag_2" => [
       "replace"=>[".", "_"]
   ]
];

tag_1tag_2 属性中,将搜索点字符(.)并替换为字符 @

Aduana\Filter::cleanSpace (bool $config, string $value)

清除值中的所有额外空格。

$shema = [
   "message" => [
       "cleanSpace"=>true
   ]
];

Aduana\Filter::option (array $config, $value)

检查提供的值是否存在于有效的选项中。

$shema = [
   "field_1" => [
       "option" => [
           1,2,3,4
       ]
   ]
];

Aduana\Filter::alias (array $config, $value)

如果值存在于相应的索引中,则将其翻译为另一个值。

$shema = [
   "field_1" => [
       "alias" => [
           "a"=>1,
           "b"=>2,
           "c"=>3,
       ]
   ]
];

属性 field_1 将从具有值 a 变更为 1

Aduana\Filter::date (字符串 $config, 字符串 $value)

格式化提供的值,这个函数应用了 date 函数。

$shema = [
   "hour" => [
       "date" => "h:i:s A"
   ]
];

Aduana\Filter::htmlEncode (布尔 $config, 字符串 $value)

htmlentities 函数应用于提供的值。

$shema = [
   "html" => [
       "htmlEncode" => true
   ]
];

Aduana\Filter::htmlDecode (布尔 $config, 字符串 $value)

html_entity_decode 函数应用于提供的值。

$shema = [
   "html" => [
       "htmlDecode" => true
   ]
];

Aduana\Filter::equal ($config, $value)

比较以下表达式 $config === $value

$shema = [
   "html" => [
       "equal" => 10
   ]
];

Aduana\Filter::notEqual ($config, $value)

比较以下表达式 $config !== $value

$shema = [
   "html" => [
       "notEqual" => 10
   ]
];

Aduana\Filter::numberFormat (数组 $config, 浮点数 $value)

在提供的值上应用 number_format 函数。

$shema = [
   "price" => [
       "numberFormat" => [ 0 , ".",","]
   ]
];

Aduana\Filter::range (数组 $config, $value )

使用 range 函数生成一个范围,然后验证提供的值是否在该范围内。

$shema = [
   "price" => [
       "range" => ["a","b"]
   ]
];

Aduana\Filter::round (浮点数 $config, 浮点数 $value)

在提供的值上应用 round 函数。

$shema = [
   "price" => [
       "round" => true
   ]
];

Aduana\Filter::force (字符串 $config, $value)

强制变量的类型,有效的类型有 integer || int, float || double, string, boolean || bool, unset

$shema = [
   "price" => [
       "force" => "integer"
   ]
];

Aduana\Filter::quotemeta (布尔 $config, 字符串 $value)

quotemeta 函数应用于提供的值。

$shema = [
   "price" => [
       "quotemeta" => true
   ]
];

Aduana\Filter::callback (可调用 $config, $value)

使用参数执行此行 call_user_func( $config, $value),为了使过滤器有效,必须符合过滤器返回格式的格式 (object)["valid"=>布尔值, "value"=>任何 ]

$shema = [
   "price" => [
       "callback" => function ($value) {
           return (object) [
               "valid" => true,
               "value" => $value
           ];
       }
   ]
];

这个函数必须始终返回一个具有以下参数的对象 (object)["valid"=>布尔值, "value"=>任何 ]