decodelabs/lucid

灵活且功能强大的清洗和验证框架

v0.4.7 2024-08-21 23:59 UTC

README

PHP from Packagist Latest Version Total Downloads GitHub Workflow Status PHPStan License

PHP的灵活且功能强大的清洗和验证框架

Lucid提供了一个统一的单值清洗和验证结构,以确保您的输入是有意义的。

DecodeLabs 博客 上获取新闻和更新。

安装

通过 composer 安装库

composer require decodelabs/lucid

用法

直接值清洗可以快速且无痛苦地实现

use DecodeLabs\Lucid;

// This ensures the value is a string
$myString = Lucid::cast('string', 'This is a string');

// This is nullable
$notAString = Lucid::cast('?string', null);

// These are constraints - throws an exception
$myString = Lucid::cast('string', 'My very long piece of text', [
    'maxLength' => 10,
    'maxWords' => 4
]);

// Creates an instance of Carbon (DateTime)
$myDate = Lucid::cast('date','tomorrow', [
    'min' => 'yesterday',
    'max' => '+3 days'
]);

如果您需要更精细地控制对约束的响应,请使用 validate()

$result = Lucid::validate('int', 'potato', [
    'min' => 4
]);

if(!$result->isValid()) {
    // Do something with the potato

    foreach($result->getErrors() as $error) {
        echo $error->getMessage();
    }
}

或者相反,如果您只需要一个是或否的回答,请使用 is()

if(!Lucid::is('float', 'not a number')) {
    // do something
}

导入

Lucid 使用 Veneer 来提供在 DecodeLabs\Lucid 下的统一前端。您可以通过这个静态前端访问所有主要功能,而不会损害测试和依赖注入。

自定义处理器

Lucid 使用 Archetype 来加载 ProcessorsConstraints - 在 DecodeLabs\Lucid\ProcessorDecodeLabs\Lucid\Constraint 命名空间中实现您自己的自定义类,或者创建自己的 Archetype Resolver 以从其他地方加载它们。

请查看现有实现的示例,以了解如何构建您自己的自定义类。

提供者接口

Lucid 基于 Lucid Support 子包,该包提供了一系列 Provider 接口,以实现 Sanitizer 结构的嵌入式实现。

请参阅 Lucid Support 中的说明,了解如何将 Lucid 集成到您自己的库中。

许可

Lucid 采用 MIT 许可证。有关完整的许可证文本,请参阅 LICENSE