shin1x1/safe-cast

0.0.2 2023-06-03 08:01 UTC

This package is auto-updated.

Last update: 2024-09-24 15:22:24 UTC


README

SafeCast 是一个用于简化并确保 PHP 中类型转换的库。它提供了一个有效的方法将混合值转换为任何给定的类型,遵循内置 PHP 函数 intval()strval()floatval()boolval() 的转换规则,而不会引发 PHP 错误。

动机

SafeCast 的主要动机包括

  • 避免 PHP 错误:内置的 PHP 转换函数,如 intval(),有时可能会根据被转换的值引发错误。SafeCast 提供了一种替代方案,始终返回安全转换的值或 null,而不是产生 PHP 错误。
  • 一致的错误处理:使用 SafeCast,转换过程中的错误要么通过抛出 InvalidArgumentException,要么返回 null 来统一处理,这使得错误处理更加可预测和管理。
  • 安全转换混合类型:它提供了一个安全且一致的方法来将混合类型的值转换为所需的类型。
  • 使用 PHP 的内置转换逻辑:尽管 SafeCast 专注于提供安全类型转换,但它仍然遵循内置 PHP 转换函数的转换规则。它不会引入任何与 PHP 内置类型转换不一致的转换行为。
  • 避免 PHPStan 错误:SafeCast 有助于防止将混合值提供给 (int|float|str|bool)val() 函数时出现的错误。

功能

SafeCast 在 PHP 的本地转换函数 (int|float|str|bool)val() 上提供了简单的包装,以下是一些可用的函数

  • try_<type>(mixed $v): ?<type> - 这些函数旨在用于处理可能导致转换错误的值。它们尝试将给定的值转换为指定的类型,如果无法转换,则返回 null
  • to_<type>(mixed $v): <type> - 这些函数旨在用于处理预期为特定类型的值。例如,当处理设置或程序员确定的值时,请使用这些函数。如果发生转换错误,它被视为程序员错误,并抛出 InvalidArgumentException

这些函数适用于 intstringfloatbool 类型。

用法

以下是如何使用 SafeCast 的一个示例

<?php

declare(strict_types=1);

require_once __DIR__ . '/vendor/autoload.php';

use function Shin1x1\SafeCast\to_int;
use function Shin1x1\SafeCast\try_int;

var_dump(try_int('100')); // int(100)
var_dump(try_int(new stdClass())); // null

var_dump(to_int('100')); // int(100)
var_dump(to_int(new stdClass())); // InvalidArgumentException

在这个例子中,$value 成功转换为每个类型。注意使用函数样式调用方法。

安装

使用 Composer 在您的 PHP 项目中安装 SafeCast

composer require shin1x1/safecast

贡献

欢迎贡献!请随意提交拉取请求。

许可证

此项目是开源软件,许可协议为 MIT 许可证。