Sobes.tech
Junior — Middle

Qaysi maxsus usul ob'ektga massiv yoki elementlar to'plami sifatida murojaat qilish imkonini beradi?

sobes.tech AI

AIdan javob

PHP'da maxsus ArrayAccess usuli ob'ektning massiv kabi harakat qilishiga imkon beradi, ya'ni uning elementlariga kvadrat qavslar yordamida murojaat qilish.

Buning uchun, sinf ArrayAccess interfeysini amalga oshirishi kerak, u to'rt ta metodni o'z ichiga oladi:

  • offsetExists($offset)$offset kalitiga ega element mavjudligini tekshiradi.
  • offsetGet($offset)$offset kalitiga ega elementning qiymatini qaytaradi.
  • offsetSet($offset, $value)$offset uchun $value qiymatini o'rnatadi.
  • offsetUnset($offset)$offset kalitiga ega elementni o'chiradi.

Misol:

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' ni chiqaradi

Shu tarzda, ArrayAccess interfeysini amalga oshirish ob'ektga massiv kabi murojaat qilish imkonini beradi.