3v4l.org

run code in 200+ php & hhvm versions
Bugs & Features
<?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);
based on MtP0i
Output for 5.2.2 - 7.2.6
string(3) "012" int(3) string(4) "seek" int(16) int(2) int(0) int(-1) string(2) "23" int(5)
Output for 5.1.4 - 5.2.1
string(3) "012" int(3) string(4) "seek" int(16) int(2) int(0) int(0) string(2) "23" int(4)
Output for 5.0.0 - 5.1.3
Warning: fopen(php://temp): failed to open stream: Success in /in/3RG7r on line 40 Warning: fwrite(): supplied argument is not a valid stream resource in /in/3RG7r on line 41 Warning: rewind(): supplied argument is not a valid stream resource in /in/3RG7r on line 42 Warning: fseek(): supplied argument is not a valid stream resource in /in/3RG7r on line 14 Warning: fread(): supplied argument is not a valid stream resource in /in/3RG7r on line 15 Warning: fseek(): supplied argument is not a valid stream resource in /in/3RG7r on line 23 Warning: feof(): supplied argument is not a valid stream resource in /in/3RG7r on line 24 string(0) "" int(0) string(4) "seek" int(0) int(-1) int(0) Warning: fseek(): supplied argument is not a valid stream resource in /in/3RG7r on line 28 Warning: fseek(): supplied argument is not a valid stream resource in /in/3RG7r on line 29 Warning: ftell(): supplied argument is not a valid stream resource in /in/3RG7r on line 30 Warning: fseek(): File_stream::stream_tell is not implemented! in /in/3RG7r on line 49 int(0) Warning: fseek(): supplied argument is not a valid stream resource in /in/3RG7r on line 14 Warning: fread(): supplied argument is not a valid stream resource in /in/3RG7r on line 15 Warning: fseek(): supplied argument is not a valid stream resource in /in/3RG7r on line 23 Warning: feof(): supplied argument is not a valid stream resource in /in/3RG7r on line 24 string(0) "" int(0)
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STATIC, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/3RG7r on line 3
Process exited with code 255.
Output for 4.3.0 - 4.3.1, 4.3.5 - 4.4.1
Parse error: parse error, unexpected T_STATIC, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/3RG7r on line 3
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /in/3RG7r on line 3
Process exited with code 255.