function to_native_a() { $result = $this->array; foreach ($result as $key => $value) { if ($value instanceof Enumerable) { $result[$key] = $value->to_native_a(); } } return $result; } function values() { return array_values($this->array); } function values_at($keys) { $keys = func_get_args(); $result = new Arr(); foreach ($keys as $key) { $result[] = $this[$key]; } return $result; } } Enumerable::extend('EnumerableMethods'); Enumerable::alias_method('at', 'offsetGet'); Enumerable::alias_method('fetch', 'offsetGet'); Enumerable::alias_method('length', 'count'); Enumerable::alias_method('map', 'collect'); Enumerable::alias_method('size', 'count'); Enumerable::alias_method('store', 'offsetSet');