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']