squirrelphp / scalar-types
通过函数显式访问PHP的强制模式和严格模式的行为。
Requires
- php: >=7.2
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.3
- phpunit/phpunit: ^8.0|^9.0
This package is auto-updated.
Last update: 2024-08-29 05:56:20 UTC
README
通过函数显式访问PHP的强制模式和严格模式的行为:包括强制转换和is_coerceable检查,它们类似于PHP中的隐式标量类型强制转换,以及一种强制执行特定标量类型的方法,模拟PHP严格模式的行为。
安装
composer require squirrelphp/scalar-types
目录
测试值是否可以强制转换
所有这些函数都接受一个混合参数 $value
并返回true或false
is_coerceable_to_int
如果$value
是以下之一则返回true
- 一个整数
- 一个没有小数部分的浮点数
- 一个没有小数部分的数字字符串
- 一个布尔值
对于任何其他值,它返回false。
is_coerceable_to_float
如果$value
是以下之一则返回true
- 一个整数
- 一个浮点数
- 一个数字字符串
- 一个布尔值
对于任何其他值,它返回false。
is_coerceable_to_bool
如果$value
是以下之一则返回true
- 值为0或1的整数
- 值为0或1的浮点数
- 一个空字符串
- 值为'0'或'1'的字符串
- 一个布尔值
对于任何其他值,它返回false。
is_coerceable_to_string
如果$value
是以下之一则返回true
- 一个整数
- 一个浮点数
- 一个字符串
- 一个布尔值
- 具有__toString魔术方法的对象
对于任何其他值,它返回false。
强制转换值
所有这些函数都接受一个混合参数 $value
并返回它们强制转换到的类型,遵循与PHP中隐式类型强制转换相同的逻辑。
coerce_to_int
像PHP 8.2那样强制转换值,这可能导致非标量和非数字值的TypeError,并针对有分数部分的浮点数或数字字符串发出弃用通知。
coerce_to_float
像PHP 8.2那样强制转换值,这可能导致非标量和非数字值的TypeError。
coerce_to_bool
像PHP 8.2那样强制转换值,这可能导致非标量值的TypeError,并针对除""、"0"、"1"、0、1、0.0和1.0以外的值发出弃用通知。
coerce_to_string
像PHP 8.2那样强制转换值,这可能导致非标量值的TypeError,除非它是一个实现了__toString魔术方法的对象。
强制执行值的类型
所有这些函数都接受一个混合参数 $value
并返回它们强制执行的类型,根据与PHP严格模式相同的逻辑。
enforce_int
如果$value
是整数,则返回$value
作为整数。否则抛出TypeError。
enforce_float
如果$value
是整数或浮点数,则返回$value
作为浮点数。否则抛出TypeError。
enforce_bool
如果$value
是布尔值,则返回$value
作为布尔值。否则抛出TypeError。
enforce_string
如果$value
是字符串,则返回$value
作为字符串。否则抛出TypeError。