test = $url["host"]; $this->position = 0; self::$tests[$url["host"]] = ''; return true; } function stream_read($count) { $ret = substr(self::$tests[$this->test], $this->position, $count); $this->position += strlen($ret); return $ret; } function stream_write($data) { $left = substr(self::$tests[$this->test], 0, $this->position); $right = substr(self::$tests[$this->test], $this->position + strlen($data)); self::$tests[$this->test] = $left . $data . $right; $this->position += strlen($data); return strlen($data); } function stream_tell() { return $this->position; } function stream_eof() { return $this->position >= strlen(self::$tests[$this->test]); } function stream_seek($offset, $whence) { switch ($whence) { case SEEK_SET: if ($offset < strlen(self::$tests[$this->test]) && $offset >= 0) { $this->position = $offset; return true; } else { return false; } break; case SEEK_CUR: if ($offset >= 0) { $this->position += $offset; return true; } else { return false; } break; case SEEK_END: if (strlen(self::$tests[$this->test]) + $offset >= 0) { $this->position = strlen(self::$tests[$this->test]) + $offset; return true; } else { return false; } break; default: return false; } } public function __destruct() { unset(self::$tests[$this->test]); } }