What you describe sounds a bit like a RecursiveArrayObject
:
class Language extends RecursiveArrayObject
{
public function __construct(array $array)
{
parent::__construct($array, ArrayObject::ARRAY_AS_PROPS);
}
}
$data = ['fields' => ['username' => ['admin' => 'ADMINv']]];
$language = new Language($data);
echo $language->fields->username->admin, "\n"; # prints "ADMINv"
That RecursiveArrayObject
is a more concrete form of the ArrayObject
:
class RecursiveArrayObject extends ArrayObject
{
public function __construct(Array $array, $flags = 0, $iterator_class = "ArrayIterator")
{
foreach ($array as $key => $value) {
if (is_array($value)) {
$value = new static($value, $flags, $iterator_class);
}
$this->offsetSet($key, $value);
}
$this->setFlags($flags);
$this->setIteratorClass($iterator_class);
}
}