<?php /** * This file is part of the Nette Framework (https://nette.org) * Copyright (c) 2004 David Grudl (https://davidgrudl.com) */ declare(strict_types=1); namespace Nette\Utils; use Nette; /** * Provides objects to work as array. * @template T */ class ArrayHash extends \stdClass implements \ArrayAccess, \Countable, \IteratorAggregate { /** * Transforms array to ArrayHash. * @param array<T> $array */ public static function from(array $array, bool $recursive = true): static { $obj = new static; foreach ($array as $key => $value) { $obj->$key = $recursive && is_array($value) ? static::from($value, true) : $value; } return $obj; } /** * Returns an iterator over all items. * @return \Iterator<int|string, T> */ public function &getIterator(): \Iterator { foreach ((array) $this as $key => $foo) { yield $key => $this->$key; } } /** * Returns items count. */ public function count(): int { return count((array) $this); } /** * Replaces or appends a item. * @param string|int $key * @param T $value */ public function offsetSet($key, $value): void { if (!is_scalar($key)) { // prevents null throw new Nette\InvalidArgumentException(sprintf('Key must be either a string or an integer, %s given.', gettype($key))); } $this->$key = $value; } /** * Returns a item. * @param string|int $key * @return T */ #[\ReturnTypeWillChange] public function offsetGet($key) { return $this->$key; } /** * Determines whether a item exists. * @param string|int $key */ public function offsetExists($key): bool { return isset($this->$key); } /** * Removes the element from this list. * @param string|int $key */ public function offsetUnset($key): void { unset($this->$key); } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
ArrayHash.php | File | 1.88 KB | 0644 |
|
ArrayList.php | File | 2.67 KB | 0644 |
|
Arrays.php | File | 10.97 KB | 0644 |
|
Callback.php | File | 3.58 KB | 0644 |
|
DateTime.php | File | 3.03 KB | 0644 |
|
FileInfo.php | File | 1.33 KB | 0644 |
|
FileSystem.php | File | 9.41 KB | 0644 |
|
Finder.php | File | 13.31 KB | 0644 |
|
Floats.php | File | 2.17 KB | 0644 |
|
Helpers.php | File | 2.6 KB | 0644 |
|
Html.php | File | 19.84 KB | 0644 |
|
Image.php | File | 22 KB | 0644 |
|
Json.php | File | 2.3 KB | 0644 |
|
ObjectHelpers.php | File | 7.07 KB | 0644 |
|
Paginator.php | File | 4.27 KB | 0644 |
|
Random.php | File | 1.12 KB | 0644 |
|
Reflection.php | File | 8.66 KB | 0644 |
|
Strings.php | File | 22.14 KB | 0644 |
|
Type.php | File | 6.46 KB | 0644 |
|
Validators.php | File | 10.49 KB | 0644 |
|
exceptions.php | File | 825 B | 0644 |
|