ArrayAccess
Интерфейс объектов с доступом через квадратные скобки.
Синтаксис
class Name implements ArrayAccessВозвращаемое значение
ArrayAccessМетоды `offsetExists()`, `offsetGet()`, `offsetSet()`, `offsetUnset()`.
Примеры
Настройки с доступом как к массиву:
<?php
class Config implements ArrayAccess
{
private array $data = ['theme' => 'light'];
public function offsetExists(mixed $key): bool { return isset($this->data[$key]); }
public function offsetGet(mixed $key): mixed { return $this->data[$key] ?? null; }
public function offsetSet(mixed $key, mixed $value): void { $this->data[$key] = $value; }
public function offsetUnset(mixed $key): void { unset($this->data[$key]); }
}
$config = new Config();
$config['size'] = 14;
echo $config['theme'], ' ', $config['size'], ' ';
var_dump(isset($config['lang']));Результат:
light 14 bool(false)Примечания
Скобки ещё не делают объект массивом: функции array_map(), in_array(), count() его не примут.
См. также
- ArrayObject — Объект, который ведёт себя как массив.
- Countable — Интерфейс объектов, которые можно передать в `count()`.
- isset — Проверяет, что переменная существует и не равна null.
В учебнике
- Встроенные интерфейсы — Интерфейсы PHP, которые учат объект вести себя как массив — Countable, IteratorAggregate, ArrayAccess, JsonSerializable и Stringable.