- var_dump: documentation ( source)
- str_repeat: documentation ( source)
- stream_wrapper_register: documentation ( source)
- fclose: documentation ( source)
- fread: documentation ( source)
- fopen: documentation ( source)
<?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);
}