x-o-r/walker

Easily and securely retrieve some values in datas

1.0.2 2017-12-01 15:57 UTC

This package is not auto-updated.

Last update: 2025-07-10 08:45:19 UTC


README

Build Status Code Coverage Scrutinizer Code Quality

Easily and securely access all targeted data nodes at different depths in data !

Usage

Retrieve Foo->Bar

(new Walker)
    ->from(
        (object)["Foo" =>
            (object)["Bar" => "Value"]
        ])
    ->with('Foo->Bar')
    ->asString();
  
/* Will return 'Value' */

Retrieve Foo->Bar in JSON stream

     
(new Walker)
    ->fromJson('{
        "Foo": {
            "Bar": "Value"
           }
       }')
    ->with('Foo->Bar')
    ->asString();
  
/* Will return 'Value' */

Retrieve Foo->Bar and Walker->Texas->Ranger

     
(new Walker)
    ->from([
        (object)["Foo" =>(object)["Bar" => "Some"]],
        (object)["Walker" =>(object)["Texas" => (object)["Ranger" => "values"]]]
    ])
    ->with('Foo->Bar')
    ->with('Walker->Texas->Ranger')
    ->asString();
  
/* Will return 'Some, values' */

With values located at different depths

           
(new Walker)
    ->from([
        (object)["Walker" =>
            (object)["Texas" =>
                (object) ['Ranger' => 'All']
            ]
        ],
        (object)["Walker" => [
                (object)["Texas" => (object)["Ranger" => "targets"]],
                (object)['Texas' => (object)['Ranger' => 'are']],
            ]
        ],
        (object)['Walker' => (object)['Texas' => (object)['Ranger' => 'retrieved']]]
    ])
    ->with('Walker->Texas->Ranger')
    ->asString(function($founds) {
        return join(' ', $founds);
    });
  
/* Will return 'All targets are retrieved' */