webdevvie/nestis

一个简单的PHP类,允许在无需null检查的情况下检索嵌套对象

1.2.0 2023-08-01 12:08 UTC

This package is auto-updated.

Last update: 2024-08-30 01:39:34 UTC


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 并打个招呼