Sobes.tech
Junior — Middle

Kuris specialus metodas leidžia prieiti prie objekto kaip masyvo ar elementų kolekcijos?

sobes.tech AI

Atsakymas iš AI

PHP specialusis metodas ArrayAccess leidžia objektui elgtis kaip masyvui, tai yra, prieiti prie jo elementų naudodami kvadratinius skliaustus.

Tam klasė turi įgyvendinti ArrayAccess sąsają, kuri apima keturis metodus:

  • offsetExists($offset) — tikrina, ar egzistuoja elementas su raktu $offset.
  • offsetGet($offset) — grąžina elemento su raktu $offset reikšmę.
  • offsetSet($offset, $value) — nustato $value reikšmę raktui $offset.
  • offsetUnset($offset) — ištrina elementą su raktu $offset.

Pavyzdys:

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']; // išveda 'value'

Šiuo būdu, ArrayAccess sąsajos įgyvendinimas leidžia pasiekti objektą kaip masyvą.