donatascn / lib-object-wrapper
此包的最新版本(0.2.3)没有可用的许可信息。
包装JSON解码数据,可轻松获取结构化项
0.2.3
2021-12-27 14:18 UTC
Requires
- php: ^8.0
Requires (Dev)
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-09 17:48:23 UTC
README
此库提供类,可轻松从JSON解码的数据中获取结构化项。
为什么?
为了更容易、更快地
- 检查正确的数据类型。这允许轻松使用PHP7静态类型提示;
- 检查所需的键/项;
- 为缺失的项提供默认值;
- 提供关于数据在对象树中确切位置的信息,该位置的数据不符合您的要求。
用法
$jsonString = json_encode([ // ... ]); /** @var stdClass $jsonData */ $jsonData = json_decode($jsonString); $data = new ObjectWrapper($jsonData); // Use like an associative array if needed foreach ($data as $key => $value) { var_dump(isset($data[$value])); var_dump($data[$value]); } var_dump($data['non_existing']); // just null - no notice var_dump($data->getRequired('required_key')); // throws exception if missing var_dump($data->getString('key_with_string')); // throws exception if not string, defaults to null var_dump($data->getString('key_with_string', 'default')); // different default var_dump($data->getRequiredString('key_with_string')); // throws exception if missing or not string var_dump(get_class($data->getRequiredObject('inner_data'))); // always another ObjectWrapper instance var_dump(get_class($data->getObject('inner_data'))); // another ObjectWrapper instance or null var_dump($data->getArrayOfString('keys')); // array of strings var_dump($data->getArrayOfOject('children')); // array of ObjectWrapper instances try { $data->getRequiredObject('inner_data')->getArrayOfObject('list')[0]->getRequiredString('key'); } catch (MissingItemException $e) { echo $e->getMessage(); // Missing required key "inner_data.list.0.key" echo $e->getKey(); // inner_data.list.0.key }
方法
$data[$key]
- 使用数组访问器获取内部任何值,如果不可用则返回null
。如果值是对象,则返回ObjectWrapper
的实例;getRequired
。返回混合值,但检查它是否提供;getRequiredBool
。返回bool
;getBool
。返回bool
或null
;getRequiredFloat
。返回float
。接受int
,但将其转换为float
;getFloat
。返回float
或null
。接受int
,但将其转换为float
;getRequiredInt
。返回int
;getInt
。返回int
或null
;getRequiredObject
。返回另一个ObjectWrapper
实例;getObject
。返回另一个ObjectWrapper
实例或null
;getRequiredString
。返回string
;getString
。返回string
或null
;getArray
。返回array
。如果没有提供项目,则返回空数组,因此没有getRequiredArray
;getArrayOfBool
。返回array
,其中所有项目都是bool
(或为空);getArrayOfFloat
。返回array
,其中所有项目都是float
(或为空);getArrayOfInt
。返回array
,其中所有项目都是int
(或为空);getArrayOfString
。返回array
,其中所有项目都是string
(或为空);getArrayOfObject
。返回array
,其中所有项目都是ObjectWrapper
的实例(或为空)。getDataAsArray
。返回array
,其中所有项目都是array
或原始类型。getOriginalData
。返回stdClass
,构造函数中传入的原始数据。
需要注意的一些事项
stdClass
用于对象 - 这是json_decode
的默认值。这是为了轻松检查数据是对象还是数组。例如,如果传递空对象或空数组作为JSON并对其进行去规范化到数组,则无法检查原始数据的类型;null
值被视为未提供- 如果您提供
null
而预期某些类型(甚至数组或对象),则不会抛出InvalidItemTypeException
; - 即使您提供值但它是
null
,也会抛出MissingItemException
;
- 如果您提供
- 对象不能被修改 - 不支持设置或删除任何内容。