Sobes.tech
Junior — Middle

Кайсы атайын ыкма объектке массив же элементтер жыйнагы катары кайрылыу мүмкүнчүлүгүн берет?

sobes.tech AI

AIден жооп

PHPде атайын ArrayAccess ыкмасы объектке массив сыяктуу мамиле кылууга мүмкүндүк берет, башкача айтканда, анын элементтерине квадратдык жакшылдар аркылуу кирүүгө болот.

Бушту, класс ArrayAccess интерфейсин ишке ашырышы керек, ал төрт методту камтыйт:

  • offsetExists($offset)$offset ачкычына ээ элемент бар-жогун текшерет.
  • offsetGet($offset)$offset ачкычына ээ элементтин маанисин кайтарат.
  • offsetSet($offset, $value)$offset үчүн $value маанисин орнотот.
  • offsetUnset($offset)$offset ачкычына ээ элементти өчүрөт.

Мисал:

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' чыгарат

Мындайча, ArrayAccess интерфейсин ишке ашуу объектке массив сыяктуу кайрылууга мүмкүндүк берет.