setbased/helper-cast
Composer 安装命令:
composer require setbased/helper-cast
包简介
Safely cast mixed values to bool, float, int, or string
README 文档
README
| Social | Legal | Release | Tests |
|---|---|---|---|
|
|
|
|
|
This package contains a strong typed utility class for safely testing and casting mixed values to bool, float, int, or string values.
Rationale
What is the purpose of this package and why is it necessary? PHP is a great language, however is has some quirks. One of them is that PHP will convert any string to an integer even when strict type is set.
The following code will not cause any error or warning (tested with PHP 7.2.12):
<?php declare(strict_types=1); ini_set('display_errors', '1'); error_reporting(E_ALL); echo '1: ', (int)'3.14', PHP_EOL; echo '2: ', (int)'123abc', PHP_EOL; echo '3: ', (int)"Ceci n'est pas une pipe.", PHP_EOL; echo '4: ', (int)'', PHP_EOL; echo '5: ', (int)null, PHP_EOL;
but gives the following output:
1: 3
2: 123
3: 0
4: 0
5: 0
This package provides a strong typed utility class for safely testing and casting mixed typed values to Boolean, float, integer, or string values.
Manual
The class SetBased\Helper\Cast has the following methods for testing mixed values against primitive data types:
| Method | Null Value | Return Type |
|---|---|---|
| isManBool | returns false | bool |
| isManFloat | returns false | bool |
| isManFiniteFloat | returns false | bool |
| isManInt | returns false | bool |
| isManString | returns false | bool |
| isOptBool | returns true | bool |
| isOptFloat | returns true | bool |
| isOptFiniteFloat | returns true | bool |
| isOptInt | returns true | bool |
| isOptString | returns true | bool |
The class SetBased\Abc\Helper\Cast has the methods shown in the table below for casting mixed values to a primitive
data type. When a value can not cast an exception will be thrown.
| Method | Null Value | Return Type |
|---|---|---|
| toManBool | throws an exception | bool |
| toManFloat | throws an exception | float |
| toManFloatInclusive | throws an exception | float |
| toManInt | throws an exception | int |
| toManString | throws an exception | string |
| toOptBool | returns null | bool|null |
| toOptFloat | returns null | float|null |
| toOptFloatInclusive | returns null | float|null |
| toOptInt | returns null | int|null |
| toOptString | returns null | string|null |
Remarks:
- 'opt' is short for optional:
nullvalues are valid. Testing and casting againstnullyieldstrueandnull, respectively. - 'man' is short for mandatory:
nullvalues are not allowed. Testing againstnullyieldsfalseand castingnullwill throw an exception.
Sample
Code:
<?php declare(strict_types=1); use SetBased\Helper\Cast; $value = "Ceci n'est pas une pipe."; if (Cast::isManInt($value)) { echo 'This is not an integer', PHP_EOL; } else { echo Cast::toManInt($value), PHP_EOL; } echo Cast::toManFloat($value), PHP_EOL;
Output:
This is not an integer
Exception
Finite Floats
A float can be finite (e.g. 3.14), infinite (i.e. INF or -INF), or not a number (i.e. NAN). The
[is|to][Man|Opt]FiniteFloat methods will assist in establishing a value is a real floating point number.
Booleans
Only and only the following values are valid representations of boolean values:
false- int(0)
- string(1) "0"
- bool(false)
true- int(1)
- string(1) "1"
- bool(true)
Hence, only these values can be cast safely to booleans and vice versa.
Installing
composer require setbased/helper-cast
References
- PHP RFC: Safe Casting Functions
- A functional and closer to the original RFC implementation theodorejb/PolyCast .
License
This project is licensed under the MIT license.
setbased/helper-cast 适用场景与选型建议
setbased/helper-cast 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 55.2k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2019 年 02 月 06 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「cast」 「safely」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 setbased/helper-cast 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 setbased/helper-cast 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 setbased/helper-cast 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Convenient array-related routine & better type casting
A package to cast json fields, each sub-keys is castable
PhpPlaisio (TypeScript): Safely cast mixed values to bool, number (float or integer), or string
Validation rules and an Eloquent Model attribute cast to value object encapsulating a South African government-issued personal identification number, for Laravel.
A database with ISO country information in all configured translations
统计信息
- 总下载量: 55.2k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 29
- 依赖项目数: 18
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-02-06