Sobes.tech
Junior — Middle

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

sobes.tech AI

Отговор от 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 позволява да се обръща към обекта като към масив.