Sobes.tech
Junior — Middle

Kura īpaša metode ļauj piekļūt objektam kā masīvam vai elementu kolekcijai?

sobes.tech AI

Atbilde no AI

PHP īpašā metode ArrayAccess ļauj objektam uzvesties kā masīvam, tas ir, piekļūt tā elementiem, izmantojot kvadrātiekavas.

Lai to izdarītu, klasei jāievieš ArrayAccess saskarne, kas satur četrus metodes:

  • offsetExists($offset) — pārbauda, vai eksistē elements ar atslēgu $offset.
  • offsetGet($offset) — atgriež elementa ar atslēgu $offset vērtību.
  • offsetSet($offset, $value) — iestata $value vērtību atslēgai $offset.
  • offsetUnset($offset) — izdzēš elementu ar atslēgu $offset.

Piemērs:

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']; // izvada 'value'

Tādējādi ArrayAccess saskarnes īstenošana ļauj piekļūt objektam kā masīvam.