decodelabs / lucid
灵活且功能强大的清洗和验证框架
v0.4.7
2024-08-21 23:59 UTC
Requires
- php: ^8.1
- decodelabs/archetype: ^0.3
- decodelabs/coercion: ^0.2.2
- decodelabs/dictum: ^0.6
- decodelabs/exceptional: ^0.4
- decodelabs/lucid-support: ^0.4
- decodelabs/veneer: ^0.11.6
- nesbot/carbon: ^2|^3
Requires (Dev)
- decodelabs/compass: ^0.2
- decodelabs/phpstan-decodelabs: ^0.6
- decodelabs/spectrum: ^0.2.1
Suggests
- decodelabs/compass: IP address validation support
- decodelabs/spectrum: Color validation support
README
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 来加载 Processors
和 Constraints
- 在 DecodeLabs\Lucid\Processor
或 DecodeLabs\Lucid\Constraint
命名空间中实现您自己的自定义类,或者创建自己的 Archetype Resolver
以从其他地方加载它们。
请查看现有实现的示例,以了解如何构建您自己的自定义类。
提供者接口
Lucid 基于 Lucid Support 子包,该包提供了一系列 Provider
接口,以实现 Sanitizer 结构的嵌入式实现。
请参阅 Lucid Support 中的说明,了解如何将 Lucid 集成到您自己的库中。
许可
Lucid 采用 MIT 许可证。有关完整的许可证文本,请参阅 LICENSE。