paysera / lib-object-wrapper
此包的最新版本(0.4.0)没有可用的许可证信息。
围绕JSON解码数据的包装器,可轻松获取结构化项
0.4.0
2023-04-28 07:29 UTC
Requires
- php: ^7.1 || ^8.0
Requires (Dev)
- phpunit/phpunit: ^6.0 || ^9.0
This package is auto-updated.
Last update: 2024-08-28 10:13:50 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
;
- 如果您提供
- 对象不能被修改 - 不支持设置或删除任何内容。