sandromiguel/php-type

验证 PHP 字段值以确保数据完整性并抑制代码检查警告。

v1.2.0 2024-03-18 12:45 UTC

README

license

PhpType 是一个精心制作的 PHP 库,用于验证字段值,保护数据完整性并抑制代码检查警告。它通过无缝集成运行时检查超越了单纯的代码检查问题,这些运行时检查在代码执行期间作为强大的验证层,确保数据与指定的类型一致。这种双重方法不仅抑制了代码检查警告,而且加强了应用程序的完整性,为数据处理过程增加了额外的信心。

特性

  • 支持 intstringboolarray 数据类型。
  • 提供简单易用的接口。
  • 轻量级且高效。
  • 文档齐全。

需求

  • PHP 8.1 或更高版本

目录

安装

您可以通过 Composer 安装此库。运行以下命令

composer require sandromiguel/php-type

使用

此库在验证数组方面表现出色,确保数据符合指定的类型,有助于构建更稳健可靠的代码库。以下是一些 PhpType 能够发挥作用的场景:

场景 1:方法输入验证

当接受数组作为方法参数时,验证输入至关重要,以确保数据与预期类型一致。在这种情况下使用 PhpType 可以提高代码可靠性并防止意外的类型不匹配。

显示代码检查警告的示例

    /**
     * @param array<string,int|string> $someArray The array.
     */
    public static function someMethodWithWarning(array $someArray): void
    {
        $someEntity = new Entity(
            $someArray['someInt'],
            $someArray['someString']
        );
        echo $someEntity->getProperty1() . "\n";
        echo $someEntity->getProperty2() . "\n";
    }

使用 PhpType 解决上述警告

    /**
     * @param array<string,int|string> $someArray The array.
     */
    public static function someMethodWithPhpType(array $someArray): void
    {
        $someInt = Validator::validate('someInt', $someArray['someInt'])->getIntValue();
        $someString = Validator::validate('someString', $someArray['someString'])->getStringValue();

        $someEntity = new Entity($someInt, $someString);
        echo $someEntity->getProperty1() . "\n";
        echo $someEntity->getProperty2() . "\n";
    }

场景 2:方法输出验证

在需要从数组返回值的情况下,如字符串,PhpType 确保返回的值符合预期类型。

use PhpType\Validator;

/**
 * Get some text.
 *
 * @return string The text.
 */
public function getSomeText(): string
{
    return Validator::validate(
        'fieldName',
        $this->params['fieldName'] ?? null
    )
        ->stringNotEmpty()
        ->getStringValue();
}

公共方法

  • validate(string $fieldName, mixed $fieldValue): Validator 开始字段的验证链。

  • stringNotEmpty(): Validator 检查字符串是否为空。

  • getArrayValue(): array 获取数组值。

  • getArrayValueOrNull(): ?array 获取数组值或 null。

  • getBoolValue(): bool 获取布尔值。

  • getBoolValueOrNull(): ?bool 获取布尔值或 null。

  • getIntValue(): int 获取整数值。

  • getIntValueOrNull(): ?int 获取整数值或 null。

  • getStringValue(): string 获取字符串值。

  • getStringValueOrNull(): ?string 获取字符串值或 null。

  • getValue(): mixed 获取混合值。

常见问题解答(FAQ)

问:为什么使用 PhpType 而不是 Psalm 或 PHPStan 等现有的代码检查工具?

答:虽然代码检查工具功能强大,但 PhpType 是一个轻量级的解决方案,专门用于处理由于数组结构中的类型不匹配而导致的代码检查警告。它提供了一个简单易用的接口,为解决此类问题提供了另一种方法。

问:可以在生产代码中使用 PhpType 吗?

答:是的,PhpType 旨在用于生产代码。它非常适合生产使用,没有任何问题。

问:为什么不用 symfony/serializer 等反序列化库来处理数组数据?

A: 序列化库,如symfony/serializer,非常适合通过将数据结构转换为对象来处理复杂的数据结构。PhpType更适合需要直接操作数组的情况,例如处理遗留代码或无法立即重构的情况。

Q: 如何使用PhpType处理代码检查警告?

A: PhpType通过提供一种简单的方法来验证数组值、确保类型正确性和抑制PHPStan等代码检查工具的警告,帮助消除代码检查警告。请查看文档中的示例和使用细节。

致谢

贡献

想要贡献?所有贡献都受欢迎。阅读贡献指南

问题

如果您有疑问,请通过@sandro_m_m发推文或创建一个问题

许可证

本项目采用MIT许可证 - 有关详细信息,请参阅LICENSE文件。

**~ 分享就是关爱 ~**