giann/trunk

A safe way to query data from a PHP array inspired by SwiftyJSON

1.5.0 2023-06-28 06:57 UTC

This package is auto-updated.

Last update: 2024-05-28 09:07:28 UTC


README

A safe way to query data from a PHP array inspired by SwiftyJSON

$trunk = new Trunk($data);

$this->assertTrue($trunk['astring'] instanceof Trunk);
$this->assertEquals($trunk['astring']->string(), 'hello world');

$this->assertEquals($trunk['anint']->int(), 12);

$this->assertEquals($trunk['alist']->listValue()[3]->string(), 'hello');

$this->assertEquals($trunk['amap']['hello']->string(), 'world');

$this->assertEquals($trunk['amap']['hello']['doesnexists']->data, null);

$this->assertTrue($trunk['anobject']->ofClass(Person::class) instanceof Person);
$this->assertEquals($trunk['anobject']->ofClass(Person::class)->name, 'joe');

$this->assertTrue($trunk['listofobject']->listOfClass(Person::class)[0] instanceof Person);
$this->assertEquals($trunk['listofobject']->listOfClass(Person::class)[0]->name, 'joe');

$this->assertTrue($trunk['mapofobject']->mapOfClass(Person::class)['joe'] instanceof Person);
$this->assertEquals($trunk['mapofobject']->mapOfClass(Person::class)['joe']->name, 'joe');

$this->assertTrue(
    $trunk['transformlist']
        ->listOfClass(
            Person::class,
            fn ($el) => new Person($el)
        )[0] instanceof Person
);

$this->assertTrue(
    $trunk['transformmap']
        ->mapOfClass(
            Person::class,
            fn ($el) => new Person($el)
        )['joe'] instanceof Person
);