alcidesrc/severe

在PHP中使用严格类型更加严重

1.0.3 2024-08-25 17:11 UTC

This package is auto-updated.

Last update: 2024-09-25 17:15:46 UTC


README

Continuous Integration

Severe

避免PHP中的数据类型冲突,使问题更加严重

[目录]

摘要

此仓库提供了一系列PHP类,这些类强制执行严格的数据类型,确保代码更加可靠和易于维护。通过使用这些类,开发者可以减少错误,提高代码可读性,并提高整体软件质量。

需求

此库需要PHP^8.3

安装

使用Composer安装 Severe

composer require fonil/severe

支持的数据类型

Severe 支持以下数据类型

泛型数据类型

用法

设置器

Severe 提供了一个静态公共方法 set(),用于验证输入并在成功时创建数据类型实例。

如果无效参数类型抛出 TypeError

use Severe\TypeString;
use Severe\TypeBoolean;
use Severe\TypeNull;

$string = TypeString::set($var);
$bool = TypeBoolean::set($flag);
$null = TypeNull::set($optional);
...
获取器

所有 Severe 数据类型实例都是 _invokable 类,因此您可以如下获取值

$value = $string();
$flag = $bool();
$optional = $null();
...

枚举类

货币

为了处理有效的货币,提供了一个名为 Currency 的后置枚举类,允许您获取允许货币的 namesymbolcodedecimals

用法
示例
use Severe\Enums\Currency;

$currency = Currency::EUR;				
echo $currency->value;       // EUR
echo $currency->code();      // 978
echo $currency->name();      // Euro
echo $currency->decimals();  // 2

$currency = Currency::UYI;
echo $currency->value;       // UYI
echo $currency->code();      // 940
echo $currency->name();      // Uruguay Peso en Unidades Indexadas (URUIURUI)
echo $currency->decimals();  // 0

// Dynamic instantiation
$currency = Currency::from('TRY');
echo $currency->value;       // TRY
echo $currency->code();      // 949
echo $currency->name();      // Turkish Lira
echo $currency->decimals();  // 2

其他数据类型

金钱

此外,Severe 提供了一个自定义数据类型来处理金钱实体。这些实体有两个组成部分

  • 金额:表示金钱数量的浮点数
  • 货币:货币实体
用法
设置器

所有这些方式都是支持的并且等效的

use Severe\Enums\Currency;
use Severe\TypeFloat;
use Severe\TypeMoney;

$money = TypeMoney::set(123.456, 'eur');
$money = TypeMoney::set(123.456, Currency::EUR);
$money = TypeMoney::set(TypeFloat::set(123.456), 'EUR');
$money = TypeMoney::set(TypeFloat::set(123.456), Currency::EUR);
获取器
[$amount, $currency] = $money();

// $amount is an instance of TypeFloat
// $currency is an instance of Currency
示例
$money = TypeMoney::set(123.456789, 'EUR');
[$amount, $currency] = $money();
echo $amount();                  // 123.46
echo $currency->value;           // EUR

$money = TypeMoney::set(123.456789, 'CLF');
echo $money()[0]->__invoke();    // 123.4568
echo $money()[1]->decimals();    // 4

安全漏洞

请查阅我们关于如何报告安全漏洞的安全策略

请不要公开披露与安全相关的问题

支持版本

只有最新主要版本会收到安全修复。

报告漏洞

如果您在此项目中发现安全漏洞,请 在此处打开问题。所有安全漏洞都将得到及时解决。

许可证

MIT许可证(MIT)。请参阅 LICENSE 文件以获取更多信息。