@ 2015-04-10T21:00:53Z <?php
class FooWrapper {
protected $opened = false;
public function stream_close() {
if (!$this->opened) {
throw new RuntimeException("Closing an unopened stream");
}
$this->opened = false;
}
public function stream_open($path, $mode, $options, &$opened_path) {
if ($this->opened) {
throw new Exception("opened already");
}
if ($path == "foo://foo") {
throw new Exception("Foo");
}
$this->opened = true;
return true;
}
public function stream_read($count) {
return str_repeat('f', $count);
}
}
stream_wrapper_register("foo", "FooWrapper");
try {
$foo = fopen("foo://foo", "r");
} catch (Exception $e) {
var_dump($e);
}
try {
$f = fopen("foo://bar", "r");
var_dump(fread($f, 10));
fclose($f);
} catch (Exception $e) {
var_dump($e);
}
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Output for 8.2.0 - 8.2.18 , 8.3.0 - 8.3.6 Deprecated: Creation of dynamic property FooWrapper::$context is deprecated in /in/SZfHt on line 29
object(Exception)#2 (7) {
["message":protected]=>
string(3) "Foo"
["string":"Exception":private]=>
string(0) ""
["code":protected]=>
int(0)
["file":protected]=>
string(9) "/in/SZfHt"
["line":protected]=>
int(16)
["trace":"Exception":private]=>
array(2) {
[0]=>
array(4) {
["function"]=>
string(11) "stream_open"
["class"]=>
string(10) "FooWrapper"
["type"]=>
string(2) "->"
["args"]=>
array(4) {
[0]=>
string(9) "foo://foo"
[1]=>
string(1) "r"
[2]=>
int(0)
[3]=>
NULL
}
}
[1]=>
array(4) {
["file"]=>
string(9) "/in/SZfHt"
["line"]=>
int(29)
["function"]=>
string(5) "fopen"
["args"]=>
array(2) {
[0]=>
string(9) "foo://foo"
[1]=>
string(1) "r"
}
}
}
["previous":"Exception":private]=>
NULL
}
Deprecated: Creation of dynamic property FooWrapper::$context is deprecated in /in/SZfHt on line 35
Warning: fread(): FooWrapper::stream_eof is not implemented! Assuming EOF in /in/SZfHt on line 36
string(10) "ffffffffff"
Output for 7.3.16 - 7.3.33 , 7.4.0 - 7.4.33 , 8.0.0 - 8.0.30 , 8.1.0 - 8.1.28 object(Exception)#2 (7) {
["message":protected]=>
string(3) "Foo"
["string":"Exception":private]=>
string(0) ""
["code":protected]=>
int(0)
["file":protected]=>
string(9) "/in/SZfHt"
["line":protected]=>
int(16)
["trace":"Exception":private]=>
array(2) {
[0]=>
array(4) {
["function"]=>
string(11) "stream_open"
["class"]=>
string(10) "FooWrapper"
["type"]=>
string(2) "->"
["args"]=>
array(4) {
[0]=>
string(9) "foo://foo"
[1]=>
string(1) "r"
[2]=>
int(0)
[3]=>
NULL
}
}
[1]=>
array(4) {
["file"]=>
string(9) "/in/SZfHt"
["line"]=>
int(29)
["function"]=>
string(5) "fopen"
["args"]=>
array(2) {
[0]=>
string(9) "foo://foo"
[1]=>
string(1) "r"
}
}
}
["previous":"Exception":private]=>
NULL
}
Warning: fread(): FooWrapper::stream_eof is not implemented! Assuming EOF in /in/SZfHt on line 36
string(10) "ffffffffff"
Output for 5.4.0 - 5.4.45 , 5.5.24 - 5.5.35 , 5.6.8 - 5.6.28 , 7.0.0 - 7.0.20 , 7.1.0 - 7.1.10 , 7.2.0 - 7.2.33 Warning: fopen(foo://foo): failed to open stream: "FooWrapper::stream_open" call failed in /in/SZfHt on line 29
object(Exception)#2 (7) {
["message":protected]=>
string(3) "Foo"
["string":"Exception":private]=>
string(0) ""
["code":protected]=>
int(0)
["file":protected]=>
string(9) "/in/SZfHt"
["line":protected]=>
int(16)
["trace":"Exception":private]=>
array(2) {
[0]=>
array(4) {
["function"]=>
string(11) "stream_open"
["class"]=>
string(10) "FooWrapper"
["type"]=>
string(2) "->"
["args"]=>
array(4) {
[0]=>
string(9) "foo://foo"
[1]=>
string(1) "r"
[2]=>
int(0)
[3]=>
NULL
}
}
[1]=>
array(4) {
["file"]=>
string(9) "/in/SZfHt"
["line"]=>
int(29)
["function"]=>
string(5) "fopen"
["args"]=>
array(2) {
[0]=>
string(9) "foo://foo"
[1]=>
string(1) "r"
}
}
}
["previous":"Exception":private]=>
NULL
}
Warning: fread(): FooWrapper::stream_eof is not implemented! Assuming EOF in /in/SZfHt on line 36
string(10) "ffffffffff"
Output for 5.3.3 - 5.3.29 Warning: fopen(foo://foo): failed to open stream: "FooWrapper::stream_open" call failed in /in/SZfHt on line 29
object(Exception)#2 (7) {
["message":protected]=>
string(3) "Foo"
["string":"Exception":private]=>
string(0) ""
["code":protected]=>
int(0)
["file":protected]=>
string(9) "/in/SZfHt"
["line":protected]=>
int(16)
["trace":"Exception":private]=>
array(2) {
[0]=>
array(4) {
["function"]=>
string(11) "stream_open"
["class"]=>
string(10) "FooWrapper"
["type"]=>
string(2) "->"
["args"]=>
array(4) {
[0]=>
string(9) "foo://foo"
[1]=>
string(1) "r"
[2]=>
int(4)
[3]=>
NULL
}
}
[1]=>
array(4) {
["file"]=>
string(9) "/in/SZfHt"
["line"]=>
int(29)
["function"]=>
string(5) "fopen"
["args"]=>
array(2) {
[0]=>
string(9) "foo://foo"
[1]=>
string(1) "r"
}
}
}
["previous":"Exception":private]=>
NULL
}
Warning: fread(): FooWrapper::stream_eof is not implemented! Assuming EOF in /in/SZfHt on line 36
string(10) "ffffffffff"
Output for 5.3.0 - 5.3.2 Warning: fopen(foo://foo): failed to open stream: "FooWrapper::stream_open" call failed in /in/SZfHt on line 0
object(Exception)#2 (7) {
["message":protected]=>
string(3) "Foo"
["string":"Exception":private]=>
string(0) ""
["code":protected]=>
int(0)
["file":protected]=>
string(9) "/in/SZfHt"
["line":protected]=>
int(16)
["trace":"Exception":private]=>
array(2) {
[0]=>
array(4) {
["function"]=>
string(11) "stream_open"
["class"]=>
string(10) "FooWrapper"
["type"]=>
string(2) "->"
["args"]=>
array(4) {
[0]=>
string(9) "foo://foo"
[1]=>
string(1) "r"
[2]=>
int(4)
[3]=>
NULL
}
}
[1]=>
array(4) {
["file"]=>
string(9) "/in/SZfHt"
["line"]=>
int(29)
["function"]=>
string(5) "fopen"
["args"]=>
array(2) {
[0]=>
string(9) "foo://foo"
[1]=>
string(1) "r"
}
}
}
["previous":"Exception":private]=>
NULL
}
Warning: fread(): FooWrapper::stream_eof is not implemented! Assuming EOF in /in/SZfHt on line 36
string(10) "ffffffffff"
Output for 5.0.5 , 5.1.0 - 5.1.6 , 5.2.0 - 5.2.17 Warning: fopen(foo://foo): failed to open stream: "FooWrapper::stream_open" call failed in /in/SZfHt on line 40
object(Exception)#2 (6) {
["message:protected"]=>
string(3) "Foo"
["string:private"]=>
string(0) ""
["code:protected"]=>
int(0)
["file:protected"]=>
string(9) "/in/SZfHt"
["line:protected"]=>
int(16)
["trace:private"]=>
array(2) {
[0]=>
array(4) {
["function"]=>
string(11) "stream_open"
["class"]=>
string(10) "FooWrapper"
["type"]=>
string(2) "->"
["args"]=>
array(4) {
[0]=>
string(9) "foo://foo"
[1]=>
string(1) "r"
[2]=>
int(4)
[3]=>
NULL
}
}
[1]=>
array(4) {
["file"]=>
string(9) "/in/SZfHt"
["line"]=>
int(29)
["function"]=>
string(5) "fopen"
["args"]=>
array(2) {
[0]=>
string(9) "foo://foo"
[1]=>
string(1) "r"
}
}
}
}
Warning: fread(): FooWrapper::stream_eof is not implemented! Assuming EOF in /in/SZfHt on line 36
string(10) "ffffffffff"
Output for 5.0.3 - 5.0.4 Warning: fopen(foo://foo): failed to open stream: "FooWrapper::stream_open" call failed in /in/SZfHt on line 40
object(Exception)#2 (6) {
["message:protected"]=>
string(3) "Foo"
["string:private"]=>
string(0) ""
["code:protected"]=>
int(0)
["file:protected"]=>
string(9) "/in/SZfHt"
["line:protected"]=>
int(16)
["trace:private"]=>
array(3) {
[0]=>
array(5) {
["file"]=>
string(9) "/in/SZfHt"
["line"]=>
int(16)
["function"]=>
string(11) "stream_open"
["class"]=>
string(10) "FooWrapper"
["type"]=>
string(2) "::"
}
[1]=>
array(6) {
["file"]=>
string(9) "/in/SZfHt"
["line"]=>
int(29)
["function"]=>
string(11) "stream_open"
["class"]=>
string(10) "FooWrapper"
["type"]=>
string(2) "->"
["args"]=>
array(4) {
[0]=>
string(9) "foo://foo"
[1]=>
string(1) "r"
[2]=>
int(4)
[3]=>
NULL
}
}
[2]=>
array(4) {
["file"]=>
string(9) "/in/SZfHt"
["line"]=>
int(29)
["function"]=>
string(5) "fopen"
["args"]=>
array(2) {
[0]=>
string(9) "foo://foo"
[1]=>
string(1) "r"
}
}
}
}
Warning: fread(): FooWrapper::stream_eof is not implemented! Assuming EOF in /in/SZfHt on line 36
string(10) "ffffffffff"
Output for 5.0.0 - 5.0.2 Warning: fopen(foo://foo): failed to open stream: "FooWrapper::stream_open" call failed in /in/SZfHt on line 40
object(Exception)#2 (6) {
["message:protected"]=>
string(3) "Foo"
["string:private"]=>
string(0) ""
["code:protected"]=>
int(0)
["file:protected"]=>
string(9) "/in/SZfHt"
["line:protected"]=>
int(16)
["trace:private"]=>
array(2) {
[0]=>
array(6) {
["file"]=>
string(9) "/in/SZfHt"
["line"]=>
int(29)
["function"]=>
string(11) "stream_open"
["class"]=>
string(10) "FooWrapper"
["type"]=>
string(2) "->"
["args"]=>
array(4) {
[0]=>
string(9) "foo://foo"
[1]=>
string(1) "r"
[2]=>
int(4)
[3]=>
NULL
}
}
[1]=>
array(4) {
["file"]=>
string(9) "/in/SZfHt"
["line"]=>
int(29)
["function"]=>
string(5) "fopen"
["args"]=>
array(2) {
[0]=>
string(9) "foo://foo"
[1]=>
string(1) "r"
}
}
}
}
Warning: fread(): FooWrapper::stream_eof is not implemented! Assuming EOF in /in/SZfHt on line 36
string(10) "ffffffffff"
Output for 4.4.2 - 4.4.9 Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/SZfHt on line 4
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, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/SZfHt on line 4
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/SZfHt on line 4
Process exited with code 255 . preferences:dark mode live preview
241.5 ms | 401 KiB | 310 Q