<?php
class VariableStream {
var $position;
var $varname;
function stream_open($path, $mode, $options, &$opened_path) {
echo "opening\n";
$url = parse_url($path);
$this->varname = $url["host"];
$this->position = 0;
return true;
}
function stream_read($count) {
echo "reading\n";
$ret = substr($GLOBALS[$this->varname], $this->position, $count);
$this->position += strlen($ret);
return $ret;
}
function stream_eof() {
echo "eoffing\n";
return $this->position >= strlen($GLOBALS[$this->varname]);
}
function stream_stat() {
echo "stating\n";
$time = time();
return array(
0, // device number
0, // inode number
0, // inode protection mode
0, // number of links
0, // userid of owner
0, // groupid of owner
0, // device type, if inode device
strlen($GLOBALS[$this->varname]), // size in bytes
$time, // atime - time of last access
$time, // mtime - time of last modification
$time, // ctime - time of creation
-1, // block size of filesystem I/O
-1 // number of 512-byte blocks allocated
);
}
}
stream_wrapper_register("var", "VariableStream");
$myvar = "fooey";
$v = include 'var://myvar';
var_dump($v);
preferences:
35.87 ms | 402 KiB | 5 Q