Our configuration object implements both ArrayAccess and Iterator, allowing it to fit into almost any programming style (including camel casing, underscored, getter/setter, and direct access). It also implements magic gets, sets, call, sleep, wakeup, and set_state.

So it can be accessed like $config->session, $config['session'], $config->get_session(), $config->getSession(), $config->session(), foreach ($config as $key => $value)

It can also be read from, and serialized to XML, YAML, JSON, INI, and JINI (a custom JSON/INI hybrid). It supports multiple caching methods, but mostly, file based via var_export, and set_state.