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 интерфейсин ишке ашуу объектке массив сыяктуу кайрылууга мүмкүндүк берет.