dtimofeev/sanitizer

v1.0.0 2020-01-19 20:33 UTC

This package is auto-updated.

Last update: 2024-09-20 06:54:54 UTC


README

这是一个适用于PHP 7.1+的简单数据清理库,无需任何外部库依赖。

Build Status codecov

用法

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中,并且可以轻松重新定义。这可以用于多语言消息,例如。