composer require bermudaphp/data-object
$obj = new DataObj(['name' => 'Sarah', 'age' => 25]);
or
$data = new StdClass();
$data->name = 'Sarah';
$data->age = 25;
$obj = new DataObj($data);
$name = $obj->name; // Sarah;
$sex = $obj->get('sex', 'woman'); // woman
$name = $obj['name']; // Sarah
foreach($obj as $name => $value) echo 'property name: ' . $name . 'property value: ' . $value ;
isset($object->name); // true
$obj->has('name'); // true
isset($obj['name']) // true
$obj->offsetExists('name') // true
$obj->sex = 'woman';
$obj->set('sex', 'woman');
$obj['sex'] = 'woman';
unset($obj->sex);
$obj->remove('sex');
$obj->offsetUnset('sex');
unset($obj['sex']);