3v4l.org

run code in 300+ PHP versions simultaneously
<?php interface TemporaryFile { public function handle(\Closure $closure) : void; public function write(string $contents): void; public function getContents() : string; public function chmod(int $mode): void; public function getUri() : string; // aka realpath public function close() : void; } class IO { /** * @return TemporaryFile */ public static function getTemporaryFile() : TemporaryFile { return new class implements TemporaryFile { private $handle; public function __construct() { $this->handle = tmpfile(); } public function handle(\Closure $closure) : void { $closure($this->handle); } public function getContents() : string { // according to PHP docs file_get_contents has much better performance // http://php.net/manual/en/function.fread.php return file_get_contents($this->getUri()); } public function getUri() : string { return stream_get_meta_data($this->handle)['uri']; } public function close() : void { if (is_resource($this->handle)) fclose($this->handle); } public function write(string $contents): void { fwrite($this->handle, $contents); } public function chmod(int $mode): void { chmod($this->getUri(), $mode); } public function __destruct() { $this->close(); } }; } } $file = IO::getTemporaryFile(); $file->write('foo'); var_dump($file->getContents());
Output for 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
string(3) "foo"
Output for 7.0.0 - 7.0.33
Fatal error: Uncaught TypeError: Return value of class@anonymous::write() must be an instance of void, none returned in /in/LYfan:48 Stack trace: #0 /in/LYfan(63): class@anonymous->write('foo') #1 {main} thrown in /in/LYfan on line 48
Process exited with code 255.
Output for 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.38
Parse error: syntax error, unexpected ':', expecting ';' or '{' in /in/LYfan on line 4
Process exited with code 255.
Output for 5.1.0 - 5.1.6, 5.2.0 - 5.2.17
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/LYfan on line 4 Parse error: syntax error, unexpected ':', expecting ';' or '{' in /in/LYfan on line 4
Process exited with code 255.
Output for 5.0.0 - 5.0.5
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/LYfan on line 4 Parse error: parse error, unexpected ':', expecting '{' or ';' in /in/LYfan on line 4
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING in /in/LYfan on line 3
Process exited with code 255.
Output for 4.3.0 - 4.3.1, 4.3.5 - 4.3.11, 4.4.0 - 4.4.1
Parse error: parse error, unexpected T_STRING in /in/LYfan on line 3
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error in /in/LYfan on line 3
Process exited with code 255.

preferences:
143.05 ms | 415 KiB | 5 Q