Sobes.tech
Junior — Middle

Ce metodă specială permite accesul la un obiect ca la o matrice sau colecție de elemente?

sobes.tech AI

Răspuns de la AI

În PHP, metoda specială ArrayAccess permite unui obiect să se comporte ca un array, adică să acceseze elementele sale folosind paranteze pătrate.

Pentru aceasta, clasa trebuie să implementeze interfața ArrayAccess, care conține patru metode:

  • offsetExists($offset) — verifică dacă există un element cu cheia $offset.
  • offsetGet($offset) — returnează valoarea elementului cu cheia $offset.
  • offsetSet($offset, $value) — setează valoarea $value pentru cheia $offset.
  • offsetUnset($offset) — elimină elementul cu cheia $offset.

Exemplu:

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']; // afișează 'value'

Astfel, implementarea interfeței ArrayAccess permite accesarea obiectului ca și cum ar fi un array.