ahmedzidan / php-value
PHP 的 gettype 函数的现代替代品。
1.0.1
2022-03-20 21:09 UTC
Requires
- php: ^5.6 || ^7.0 || ^8.0
Requires (Dev)
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-21 02:41:27 UTC
README
值
PHP 的 gettype
函数的现代替代品。
安装
打开终端,进入您的项目目录,并执行以下命令以将此包添加到您的依赖项
$ composer require fleshgrinder/value
此命令需要您已全局安装 Composer,如 Composer 文档中的安装章节中所述。
用法
当前,Value
类包含一个名为 getValue
的单个静态方法,以及与 PHP 类型名称对应的常量,这些名称与 getValue
方法返回的值相对应。目前没有计划扩展此 API,除非添加新类型或删除旧类型,否则以下功能被视为完整。
<?php use Fleshgrinder\Core\Value; $closed_resource = tmpfile(); fclose($closed_resource); $values = [ [], true, 1.0, 1, null, new stdClass, new DateTimeImmutable, tmpfile(), $closed_resource, 'string' ]; foreach ($values as $value) { echo Value::getType($value) , "\n"; }
上面的代码将输出以下内容
array
boolean
float
integer
null
stdClass
DateTimeImmutable
string
resource
closed resource
此输出与类中的可用常量相对应,除了具体的类名以及可用的可调用和可迭代伪类型名称外
<?php use Fleshgrinder\Core\Value; echo Value::TYPE_ARRAY; // array echo Value::TYPE_BOOL; // boolean echo Value::TYPE_CALLABLE; // callable echo Value::TYPE_CLOSED_RESOURCE; // closed resource echo Value::TYPE_FLOAT; // float echo Value::TYPE_INT; // integer echo Value::TYPE_ITERABLE; // iterable echo Value::TYPE_NULL; // null echo Value::TYPE_OBJECT; // object echo Value::TYPE_RESOURCE; // resource echo Value::TYPE_STRING; // string
此方法在创建错误消息时非常有用。PHP 世界中最常见的模式之一是以下内容
$type = is_object($arg) ? get_class($arg) : gettype($arg);
这不仅麻烦,而且由于 PHP 的 gettype
函数不一致,还会产生不一致的类型名称。这可以用这个库提供的方法来替换。
$type = Value::getType($arg);
此方法不会抛出任何内容,也不会发出错误。这个小型库的唯一目标是尽可能保持代码 DRY,毕竟,它是其中最重要的原则之一。
我尝试将此更改纳入 PHP 内核,但被拒绝了,请参阅PHP RFC: var_type
以及下面的链接资源以获取更多详细信息。