webdevvie / nestis
一个简单的PHP类,允许在无需null检查的情况下检索嵌套对象
1.2.0
2023-08-01 12:08 UTC
Requires
- php: >=7.4|~8.0|~8.1|~8.2
Requires (Dev)
- phpunit/phpunit: >=4
README
一个简单的类,可以从数组或嵌套属性中获取嵌套属性或数组键。
为什么
经过几周is_null($object)检查,并无法可靠地依赖于我使用的api输出始终具有我需要的对象,我决定这个方法需要被制作。现在我可以这样做,而不用担心遇到null或其他随机对象,这是api响应的
public function getThatThingIWant($apiResponse)
{
return $nestis->getNestedItem('someObject/someOtherProperty/itemIWant',$apiResponse);
}
而不是
public function getThatThingIWant($apiResponse)
{
$someObject = $apiResponse->getSomeObject();
if(!is_null($someObject))
{
$someOtherProperty = $someObject->getSomeOtherProperty();
if(!is_null($someOtherProperty))
{
return $someOtherProperty->getItemIWant();
}
}
return null;
}
它在数组、对象、公共属性、公共方法、get{{属性名}}和is{{属性名}}以及公共静态属性上工作
分隔符是/ 对于静态属性使用 ::{yourvarname}(例如:testItem/::someStaticVar)
也可以很好地与json对象配合使用。
在项目中使用它
首先使用composer将其添加到您的项目中
./composer require webdevvie/nestis
在您的项目中使用该类。
use Webdevvie\Nestis;
然后尝试一下!
use Webdevvie\Nestis\Nestis;
$nested = (object)["test"=>(object)["layer1"=>['layer2'=>(object)['layer3'=>'downtherabbithole']]]];
print_r($nested);
$nestis = new Nestis();
$item = $nestis->getNestedItem('test/layer1/layer2',$nested,null);
print_r($item);
这将输出
stdClass Object
(
[test] => stdClass Object
(
[layer1] => Array
(
[layer2] => stdClass Object
(
[layer3] => downtherabbithole
)
)
)
)
stdClass Object
(
[layer3] => downtherabbithole
)
作者
如果你喜欢这个库。在推特上找到我 @webdevvie 或我的个人网站 johnbakker.name 并打个招呼