dtimofeev / sanitizer
v1.0.0
2020-01-19 20:33 UTC
Requires
- php: ^7.1
Requires (Dev)
- phpunit/phpunit: ^7
This package is auto-updated.
Last update: 2024-09-20 06:54:54 UTC
README
这是一个适用于PHP 7.1+的简单数据清理库,无需任何外部库依赖。
用法
use Sanitizer\Sanitizer; use Sanitizer\SanitizerSchema as SS; // Single element $processed = Sanitezer::process(true, SS::boolean()); // Complex schema $processed = Sanitizer::process($input, SS::arr()->schema([ 'id' => SS::integer()->min(1), 'nickname' => SS::string()->alphaNum(), 'email' => SS::string()->email(), 'ip' => SS::string()->ip(), 'sex' => SS::string()->optional('na')->oneOf(['male', 'female', 'na']), 'favMovies' => SS::arr()->each( SS::arr()->schema([ 'title' => SS::string()->trim()->max(200), 'release' => SS::date()->format('Y-m-d H:i:s'), 'tags' => SS::arr()->unique()->each( SS::string()->alphaNum() ), ]) ), ]));
别名
别名允许定义常用清理规则的单一版本。可以通过SS::createAlias(string $name, SanitizerSchema $schema, bool $persistent = true)
来定义,并在任何深度下作为正常模式规则使用SS::alias($name)
。参数$persistent
指示别名是否在首次完全验证(单次调用Sanitizer::process(...)
)后保留。也可以通过SS::destroyAlias(string $name)
手动销毁别名。
由于模式的本性,这些也比定义单独的模式更节省内存。
示例
SS::createAlias('alphaNum', SS::string()->alphaNum()); $processed = Sanitizer::process($input, SS::arr()->schema([ 'nickname' => SS::alias('alphaNum'), 'favMovies' => SS::arr()->each( SS::arr()->schema([ 'tags' => SS::arr()->unique()->each(SS::alias('alphaNum')), ]) ), ]));
支持的详细方法
SS::boolean()
SS::integer()
SS::string()
SS::date()
SS::arr()
SS::decimal()
自定义错误消息
错误消息定义在静态映射SanitizerException::$messages
中,并且可以轻松重新定义。这可以用于多语言消息,例如。