大泽 / type-utils
PHP类型转换工具。
Requires (Dev)
- phpstan/phpstan: ^1.0
- phpunit/phpunit: ^9.5
README
StringUtil
StringUtil::canBeString(mixed $value): bool
如果 $value 可以安全地转换为字符串(是标量或具有 __toString 方法的对象或 null),则返回 true
。
StringUtil::canBeString
方法快捷方式
$array = ['string', 123, [], null]; array_filter($array, StringUtil::canBeString); // ['string', 123, null]
StringUtil::toStringOrNull(mixed $value): ?string
如果可能,将值转换为 string
或返回 null
。
StringUtil::toStringOrNull
方法快捷方式
$a = ['string', 123, [], new stdClass()]; array_map(StringUtil::toStringOrNull, $a); // ['string', '123', null, null]
StringUtil::toString(mixed $value): string
如果可能,将值转换为 string
或抛出 InvalidTypeException
。
StringUtil::toString
方法快捷方式
$a = ['string', 123, null]; array_map(StringUtil::toString, $a); // ['string', '123', ''] $b = ['string', new stdClass()]; array_map(StringUtil::toString, $b); // throws InvalidTypeException
NumberUtil
NumberUtil::canBeNumber(mixed $value): bool
如果值可以安全地转换为 int|float
,则返回 true,这意味着
- 它是数字
- 或数值字符串
- 或可以转换为数值字符串
- 或是一个可以转换为
0|1
的布尔值 - 或为
null
NumberUtil::canBeNumber
方法快捷方式
$array = [123, 1.23, '123', 'string', null]; array_filter($array, NumberUtil::canBeNumber); // [123, 1.23, '123', null]
NumberUtil::toIntOrNull(mixed $value): ?int
如果可能,将值转换为 int
或返回 null
。
NumberUtil::toIntOrNull
方法快捷方式
$a = [123, 1.23, 'string']; array_map(NumberUtil::toIntOrNull, $a); // [123, 1, null]
NumberUtil::toInt(mixed $value): int
如果可能,将值转换为 int
或抛出 InvalidTypeException
。
NumberUtil::toFloatOrNull(mixed $value): ?float
如果可能,将值转换为 float
或返回 null
。
NumberUtil::toFloatOrNull
方法快捷方式
$a = [123, 1.23, 'string']; array_map(NumberUtil::toFloatOrNull, $a); // [123.0, 1.23, null]
NumberUtil::toFloat(mixed $value): float
如果可能,将值转换为 float
或抛出 InvalidTypeException
。
ArrayUtil
ArrayUtil::canBeArray(mixed $value): bool
如果 $value
是或可以转换为 array
(可迭代或 null),则返回 true。
ArrayUtil::canBeArray
方法快捷方式
$array = [['array'], new ArrayObject(['object']), 'string']; array_filter($array, ArrayUtil::canBeArray); // [['array'], new ArrayObject(['object'])]
ArrayUtil::toArrayOrNull(mixed $value): ?array<int|string, mixed>
将 $value 转换为 array
(保留键)或返回 null
。
ArrayUtil::toArrayOrNull
方法快捷方式
$a = ['a' => ['array'], 'b' => 'string', 'c' => new ArrayObject(['object'])]; array_map(ArrayUtil::toArrayOrNull, $a); // ['a' => ['array'], 'b' => null, 'c' => ['object']] $iterate = function() { yield 9 => 'nine'; yield 9 => 'nine'; yield 9 => 'nine'; }; array_map(ArrayUtil::toArrayOrNull, $iterate()); // [9 => 'nine']
ArrayUtil::toArrayListOrNull(mixed $value): ?array<int, mixed>
将 $value 转换为 array-list
(重新索引键)或返回 null
。
ArrayUtil::toArrayListOrNull
方法快捷方式
$a = ['a' => ['array'], 'b' => 'string', 'c' => new ArrayObject(['object'])]; array_map(ArrayUtil::toArrayListOrNull, $a); // [['array'], null, ['object']] $iterate = function() { yield 9 => 'nine'; yield 9 => 'nine'; yield 9 => 'nine'; }; array_map(ArrayUtil::toArrayOrNull, $iterate()); // ['nine', 'nine', 'nine']
ArrayUtil::toArray(mixed $value): array<int|string, mixed>
将 $value 转换为 array
(保留键)或抛出 InvalidTypeException
。
ArrayUtil::toArrayList(mixed $value): array<int, mixed>
将 $value 转换为 array-list
(重新索引键)或抛出 InvalidTypeException
。
ArrayUtil::isCountable(mixed $value): bool
与标准 is_countable
相同,此外它还允许通过 ArrayUtil::isCountable
短路调用。
ArrayUtil::countOrNull(mixed $value): ?int
如果 $value 可计数,则返回计数或返回 null
。
BooleanUtil
BooleanUtil::canBeBool(mixed $value): bool
如果 $value 可以被视为布尔值(true, false, 0, 1),则返回 true。
BooleanUtil::canBeBool
快捷方式也可用。
BooleanUtil::toBoolOrNull(mixed $value): ?bool
如果可能,将值转换为 bool
或返回 null
。
BooleanUtil::toBool(mixed $value): ?bool
如果可能,将值转换为 bool
或抛出 InvalidTypeException
。
DateUtil
DateUtil::canBeDate(mixed $value): bool
如果 $value 可以转换为 DateTimeImmutable
(意味着它具有 DateTimeInterface
或是 strtotime
支持的字符串),则返回 true
。
DateUtil::canBeDate
方法快捷方式
$now = new DateTime('now'); $a = ['today', $now, 'never']; array_filter($a, DateUtil::canBeDate); // ['today', $now]
DateUtil::toDatetimeOrNull(mixed $value): ?DateTimeImmutable
如果可能,将值转换为 DateTimeImmutable
或返回 null
。
快捷方式 DateUtil::toDatetimeOrNull
也可用。
日期工具类::toDatetime(mixed $value): DateTimeImmutable
如果可能,将值转换为DateTimeImmutable
,否则抛出InvalidTypeException
。
快捷方式日期工具类::toDatetime
也提供。
日期工具类::toDateFormatOrNull(mixed $value, string $format): ?string
如果$value
是日期,则将其转换为指定的日期格式,否则返回null
。
日期工具类::toDateFormat(mixed $value, string $format): string
如果$value
是日期,则将其转换为指定的日期格式,否则抛出InvalidTypeException
。
日期工具类::toTimestampOrNull(mixed $value): ?int
如果$value
是日期,则将其转换为Unix时间戳,否则返回null
。
日期工具类::toTimestamp(mixed $value): int
如果$value
是日期,则将其转换为Unix时间戳,否则抛出InvalidTypeException
。