alcidesrc / severe
在PHP中使用严格类型更加严重
1.0.3
2024-08-25 17:11 UTC
Requires
- php: ^8.3
- swaggest/json-schema: ^0.12.42
Requires (Dev)
- php-parallel-lint/php-console-highlighter: ^1.0
- php-parallel-lint/php-parallel-lint: ^1.3
- phpmd/phpmd: ^2.15
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^11.0
- slope-it/clock-mock: ^0.4.0
- squizlabs/php_codesniffer: ^3.9
- symfony/var-dumper: ^7.0
README
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
的后置枚举类,允许您获取允许货币的 name
、symbol
、code
和 decimals
。
用法
示例
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 文件以获取更多信息。