肉磨机 / 值
此包已被 废弃 并不再维护。未建议替代包。
PHP 的 gettype 函数的现代替代品。
1.0.0
2017-02-22 18:03 UTC
Requires
- php: ^5.6 || ^7.0
Requires (Dev)
- phpunit/phpunit: ^5.0
This package is not auto-updated.
Last update: 2020-01-24 17:03:18 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
和下面的链接资源以获取更多信息。