3v4l.org

run code in 300+ PHP versions simultaneously
<?php class File_stream { static $stream; protected $position; function stream_open ($path, $mode) { if ($mode != 'r' && $mode != 'rb') { return false; } $this->position = 0; return true; } function stream_read ($length) { fseek(self::$stream, $this->position); $bytes = fread(self::$stream, $length); $this->position += strlen($bytes); return $bytes; } function stream_tell () { return $this->position; } function stream_eof () { fseek(self::$stream, $this->position); return feof(self::$stream); } function stream_seek ($offset, $whence = SEEK_SET) { var_dump('seek', $this->position, $offset, $whence); fseek(self::$stream, $this->position); $result = fseek(self::$stream, $offset, $whence); $this->position = ftell(self::$stream); return $result; } function stream_stat () { return fstat(self::$stream); } } stream_wrapper_register('request-file', 'File_stream'); $data = '0123456789abcdef'; $stream_direct = fopen('php://temp', 'w+b'); fwrite($stream_direct, $data); rewind($stream_direct); File_stream::$stream = $stream_direct; $stream = fopen('request-file://', 'r'); var_dump(fread($stream, 3)); var_dump(ftell($stream)); var_dump(fseek($stream, -1, SEEK_CUR)); var_dump(fread($stream, 2)); var_dump(ftell($stream)); fclose($stream);
Output for 8.2.0 - 8.2.19, 8.3.0 - 8.3.7
Deprecated: Creation of dynamic property File_stream::$context is deprecated in /in/3RG7r on line 46 string(3) "012" int(3) string(4) "seek" int(16) int(2) int(0) int(-1) string(2) "23" int(5)
Output for 5.5.0 - 5.5.38, 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28
string(3) "012" int(3) string(4) "seek" int(16) int(2) int(0) int(-1) string(2) "23" int(5)

preferences:
233.7 ms | 404 KiB | 341 Q