uuf6429/php-castable

PHP类型转换功能

2.0.0 2024-06-02 16:19 UTC

This package is auto-updated.

Last update: 2024-09-04 06:20:33 UTC


README

CI codecov Minimum PHP Version License Latest Stable Version Latest Unstable Version

PHP类型转换的基本基础。

🔌 安装

推荐并最简单的方式安装此库是通过Composer。

composer require uuf6429/php-castable

⭐️ 特性 / 功能

  • 与简单类型和对象一起工作
  • cast($value, $type) 函数将值转换为目标类型。
  • Castable 接口,当在实现此接口的对象上调用 cast() 时,会公开方法。
  • 错误处理 - 所有错误都路由到 NotCastableException
  • 修复了IDE对PHPDoc泛型的类型提示。

虽然 cast() 只是一个常规PHP函数,但它相当于其他语言中的类型转换运算符(例如 val as Type(Type)valval.to(Type)CAST(val, TYPE)...)。

🚀 示例

class Cat implements \uuf6429\Castable\Castable
{
    public function castTo($type)
    {
        if ($type === Dog::class) {
            return new Dog();
        }

        throw new RuntimeException("Unsupported type $type.");
    }
}

class Dog {}

$dog = \uuf6429\Castable\cast(new Cat(), Dog::class); // ok, cat becomes a dog :)
$cat = \uuf6429\Castable\cast($dog, Cat::class);      // not allowed

🔍 转换行为

转换过程遵循以下步骤

  1. 如果值是所需类型的对象或值,则返回未更改的值。
  2. 如果值是实现了 Castable 接口的 对象,则调用 castTo() 并返回其值。
  3. 否则,尝试PHP的 settype()

在任何时候,都可能发生错误或不受支持的类型转换,在这种情况下将抛出 NotCastableException

💰 动机

在许多情况下,在类中具有特定的 castToX() 方法就足够了,并且通常工作得很好。

然而,这可能会变得非常重复且容易出错,直到需要更动态的解决方案。此包有助于安全地避免所有这些样板代码。