/** * constructor * @param array $array * @param array $keys */ public function __construct(array $array, array $keys) { array_walk($keys, function ($k) { if (!is_string($k)) { throw new RuntimeException("Keys must only be string"); } }); $this->keys = $keys; $this->flip = array_flip($keys); $arrkeys = array_keys($array); if (!empty(array_diff($arrkeys, $keys)) || !empty(array_diff($keys, $arrkeys))) { throw new RuntimeException("keys missmatching"); } parent::__construct($array); }