Почему код не работает, если я пробую echo или unset переменную? - PullRequest
0 голосов
/ 04 января 2019

Если я пытаюсь получить переменную типа $var[1] или $var['rew'], встроенный сервер php просто останавливается в следующие 30 секунд без каких-либо ошибок или причин.

Windows 10 x64 и PHP7.2 VC15 TS x64 установлены

<?php

final class eArray implements ArrayAccess
{
    private $container = [];

    public function __construct($data = [])
    {
        if (is_iterable($data) && count($data) > 0) {
            foreach ($data as $id => $value) {
                $this->container[$id] = $value;
            }
        } else {
            $this->container[] = $data;
        }
    }

    public function offsetExists($offset)
    {
        $this->isOffsetScalar($offset);
        return isset($this[$offset]);
    }

    public function offsetGet($offset)
    {
        $this->isOffsetScalar($offset);
        if ($this->offsetExists($offset)) {
            return $this->container[$offset];
        }
        throw new Exception('Item with `' . $offset . '` key not found!');
    }

    public function offsetSet($offset, $value)
    {
        $this->isOffsetScalar($offset);
        $this->container[$offset] = $value;
    }

    public function offsetUnset($offset)
    {
        $this->isOffsetScalar($offset);
        if ($this->offsetExists($offset)) {
            throw new Exception('Item with `' . $offset . '` key not found!');
        }
        unset($this->container[$offset]);
    }

    private function isOffsetScalar($offset)
    {
        if (! is_scalar($offset)) {
            throw new Exception('Key must be scalar! `' . gettype($offset) . '` given.');
        }
    }

    public function __debugInfo()
    {
        return $this->container;
    }
}

$i = new eArray('wfee');
$i[3] = 4;
unset($i[3]); // Here dies
var_dump($i);

$dd = new eArray(['wfeg',4,6]);
unset($dd[2]); // Here to
echo $dd[1]; // And here
var_dump($dd);

Я просто пытаюсь написать собственную реализацию массива;

И только для stackoverflow:
Похоже, мой пост в основном состоит из кода, да, верно, сколько слов нужно, чтобы опубликовать его? О, этого достаточно.

...