PHP code example of dmitrijs-brujevs / data-object

1. Go to this page and download the library: Download dmitrijs-brujevs/data-object library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

dmitrijs-brujevs / data-object example snippets


use DmitrijsBrujevs\DataObject\DataObject;

$obj = DataObject::fromArray([
    'user' => [
        'name'    => 'John',
        'role'    => 'admin',
        'address' => [
            'city'    => 'Riga',
            'country' => 'Latvia',
        ],
    ],
]);

$obj->get('user/name');              // "John"
$obj->get('user/address/city');      // "Riga"
$obj->has('user/role');              // true
$obj->is('user/role', 'admin');      // true
$obj->set('user/age', 30);
$obj->delete('user/role');

$obj->getOrDefault('user/email', 'n/a'); // "n/a" — key is absent

// from array
$obj = DataObject::fromArray(['key' => 'value']);

// from JSON string
$obj = DataObject::fromJson('{"key":"value"}');

// from PHP serialized string (objects disallowed — see Security section)
$obj = DataObject::fromSerialized(serialize(['key' => 'value']));

$obj = new DataObject(['key' => 'value']);
$obj = new DataObject('{"key":"value"}');
$obj = new DataObject(serialize(['key' => 'value']));

$obj->get('user/name');    // "John"
$obj->get('user');         // DataObject { name: "John", ... }
$obj->get('user/missing'); // null
$obj->get();               // $this

$obj->set('role', null);

$obj->getOrDefault('role', 'guest');    // null    — key exists, value is null
$obj->getOrDefault('missing', 'guest'); // "guest" — key does not exist

$obj->set('role', null);
$obj->has('role');    // true  — key exists, value is null
$obj->has('email');   // false — key is absent
$obj->has('');        // true  — root always exists

$obj->set('score', 10);
$obj->set('role', null);

$obj->is('score', 10);      // true
$obj->is('score', '10');    // false — int !== string
$obj->is('role', null);     // true  — key exists, value is null
$obj->is('missing', null);  // false — key does not exist

$obj->set('user/name', 'Jane');
$obj->set('user/address/zip', '1010');
$obj->set('user/role', null);

$obj->set('a', 1)->set('b', 2)->set('c', 3);

$obj->add(['user' => ['name' => 'John', 'age' => 30]]);
$obj->get('user/name'); // "John"

// with a path prefix
$obj->add(['host' => 'localhost', 'port' => 3306], 'config/db');
$obj->get('config/db/host'); // "localhost"

// empty array is stored, not ignored
$obj->add(['tags' => []]);
$obj->has('tags');  // true
$obj->get('tags');  // DataObject (empty)

$obj->delete('user/role');
$obj->has('user/role');  // false
$obj->get('user/name');  // "John" — siblings intact

$obj->delete('user/age')->delete('user/email'); // fluent

$obj->toArray();
// ['user' => ['name' => 'John', 'age' => 30]]

$obj->toJson();
// {"user":{"name":"Иван","url":"https://example.com"}}

$obj->toJson(JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);

$serialized = $obj->serialize();
$restored   = DataObject::fromSerialized($serialized);

$obj->getUserName()           // → get('user/name')
$obj->setUserName('Jane')     // → set('user/name', 'Jane')
$obj->hasUserRole()           // → has('user/role')
$obj->isUserRole('admin')     // → is('user/role', 'admin')
$obj->deleteUserRole()        // → delete('user/role')
$obj->getUserAddressCity()    // → get('user/address/city')

foreach ($obj as $key => $value) {
    // $value is DataObject if the element is a nested array
}

// nested foreach works across any depth
foreach ($obj as $continent => $countries) {
    foreach ($countries as $country => $info) {
        echo $info->get('capital');
    }
}

$obj = DataObject::fromArray(['user' => ['name' => 'John']], delimiter: '.');

$obj->get('user.name'); // "John"
$obj->set('user.age', 30);

class UserObject extends DataObject {}

$user = UserObject::fromArray(['name' => 'John', 'roles' => ['admin', 'editor']]);
$user->get('roles'); // UserObject instance, not DataObject

"user/address/city"  →  $data['user']['address']['city']
"config/db/port"     →  $data['config']['db']['port']