Sobes.tech
Назад к вопросам
Junior — Middle
95

Какой специальный метод позволяет обращаться к объекту в виде массива или коллекции элементов?

Компании, где спрашивали
АО Тривио

Ответ от нейросети

sobes.tech AI

В PHP специальный метод ArrayAccess позволяет объекту вести себя как массив, то есть обращаться к его элементам с помощью квадратных скобок.

Для этого класс должен реализовать интерфейс ArrayAccess, который содержит четыре метода:

  • offsetExists($offset) — проверяет, существует ли элемент с ключом $offset.
  • offsetGet($offset) — возвращает значение элемента с ключом $offset.
  • offsetSet($offset, $value) — устанавливает значение $value для ключа $offset.
  • offsetUnset($offset) — удаляет элемент с ключом $offset.

Пример:

class MyCollection implements ArrayAccess {
    private $container = [];

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

    public function offsetGet($offset) {
        return $this->container[$offset] ?? null;
    }

    public function offsetSet($offset, $value) {
        if (is_null($offset)) {
            $this->container[] = $value;
        } else {
            $this->container[$offset] = $value;
        }
    }

    public function offsetUnset($offset) {
        unset($this->container[$offset]);
    }
}

$obj = new MyCollection();
$obj['key'] = 'value';
echo $obj['key']; // выводит 'value'

Таким образом, реализация интерфейса ArrayAccess позволяет обращаться к объекту как к массиву.