_result = !is_null($this->_result) ? $this->_result : array(); if (is_null($this->_status) && $prevChar == Unserialize_Parser::SYMBOL_COLON) { $this->_length .= $char; $this->_status = self::READING_LENGTH; return null; } if ($this->_status == self::READING_LENGTH) { if ($char == Unserialize_Parser::SYMBOL_COLON) { $this->_length = (int)$this->_length; if ($this->_length == 0) { $this->_status = self::FINISHED_ARR; return null; } $this->_status = self::FINISHED_LENGTH; } else { $this->_length .= $char; } } if ($this->_status == self::FINISHED_LENGTH && $prevChar == '{') { $this->_reader = new Unserialize_Reader_ArrKey(); $this->_status = self::READING_KEY; } if ($this->_status == self::READING_KEY) { $key = $this->_reader->read($char, $prevChar); if (!is_null($key)) { $this->_status = self::READING_VALUE; $this->_reader = new Unserialize_Reader_ArrValue($key); return null; } } if ($this->_status == self::READING_VALUE) { $value = $this->_reader->read($char, $prevChar); if (!is_null($value)) { $this->_result[$this->_reader->key] = $value; if (count($this->_result) < $this->_length) { $this->_reader = new Unserialize_Reader_ArrKey(); $this->_status = self::READING_KEY; return null; } else { $this->_status = self::FINISHED_ARR; return null; } } } if ($this->_status == self::FINISHED_ARR) { if ($char == '}') { return $this->_result; } } } }