Sobes.tech
Junior — Middle

Jaka specjalna metoda pozwala na dostęp do obiektu jako do tablicy lub kolekcji elementów?

sobes.tech AI

Odpowiedź od AI

W PHP, specjalna metoda ArrayAccess pozwala obiektowi zachowywać się jak tablica, czyli odwoływać się do jego elementów za pomocą nawiasów kwadratowych.

Aby to osiągnąć, klasa musi zaimplementować interfejs ArrayAccess, który zawiera cztery metody:

  • offsetExists($offset) — sprawdza, czy istnieje element z kluczem $offset.
  • offsetGet($offset) — zwraca wartość elementu z kluczem $offset.
  • offsetSet($offset, $value) — ustawia wartość $value dla klucza $offset.
  • offsetUnset($offset) — usuwa element z kluczem $offset.

Przykład:

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']; // wyświetla 'value'

W ten sposób implementacja interfejsu ArrayAccess pozwala na dostęp do obiektu jak do tablicy.