Just use ArrayObject
Collection and Container
Immutable Object
Base Values Trait