从字符串创建虚拟文件

时间:2014-01-29 14:52:46

标签: php file

我正在使用一个库作为参数,使用fopen将其打开并使用fseekfread

进行阅读

这是构造函数的样子:

public function __construct($file) {
    $this->file = $file;
    $this->h = fopen($this->file, "r");

    $stats = fstat($this->h);
    $this->size = $stats['size'];
}

我想给这个构造函数的数据来自一个数据库,所以基本上我有一个带有一些文本的变量。

有没有办法从包含数据的变量中模拟文件?

我尝试使用php://memory流而没有任何运气($stats = fstat($this->h) = 0):

$data = " my string data";
$virtualfile = 'php://memory';
$h = fopen($path, "rw+");
fwrite($h, $data);

$lib = new MyLib($virtualfile);

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:2)

您可以使用data:网址包装

$data = " my string data";
$virtualfile='data:text/plain;base64,'.base64_encode($data);
$lib = new MyLib($virtualfile);

答案 1 :(得分:0)

fopen返回一个指向该文件的$h指针 - 您应该将此指针传递给您的类以继续处理它,所以:

$lib = new MyLib($h);

和构造函数:

public function __construct($h) {
    $this->h = $h;

    $stats = fstat($this->h);
    $this->size = $stats['size'];
}