# responsive-menu/3.1.21/app/Container/Container.php

Responsive Menu – Create Mobile-Friendly Menu, version 3.1.21. 48 lines.

- Page: https://pluginprobe.com/plugins/responsive-menu/3.1.21/code/app/Container/Container.php
- Raw: https://pluginprobe.com/plugins/responsive-menu/3.1.21/raw/app/Container/Container.php
- Modified: 2019-05-18T23:21:10+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/responsive-menu/3.1.21/code/app/Container/Container.php#L10-L20`.

```php
<?php

namespace ResponsiveMenu\Container;

class Container implements \ArrayAccess {

    private $values = [];
    private $raw = [];
    private $keys = [];

    public function offsetSet($id, $value) {
        $this->values[$id] = $value;
        $this->keys[$id] = true;
    }

    public function offsetGet($id) {

        if(!isset($this->keys[$id])) {
            throw new \InvalidArgumentException(sprintf('Identifier "%s" is not defined.', $id));
        }

        if(isset($this->raw[$id]) || !is_object($this->values[$id]) || !method_exists($this->values[$id], '__invoke')) {
            return $this->values[$id];
        }

        $raw = $this->values[$id];
        $val = $this->values[$id] = $raw($this);
        $this->raw[$id] = $this->values[$id];

        return $this->values[$id];
    }

    public function offsetExists($id) {
        return isset($this->keys[$id]);
    }

    public function offsetUnset($id) {
        if(isset($this->keys[$id])) {
            unset($this->values[$id], $this->raw[$id], $this->keys[$id]);
        }
    }

    public function keys() {
        return array_keys($this->values);
    }

}

```
