PHP Streams函数

PHP stream_register_wrapper() 函数用于注册作为 PHP 类实现的 URL 包装器。它允许实现用户定义的协议处理程序和流,以便与所有其他文件系统函数一起使用,例如 fopen()fread()

该函数是 stream_wrapper_register() 函数。

语法

stream_register_wrapper(protocol, class, flags) 

参数

protocol必填。 指定要注册的包装器名称。有效的协议名称只能包含字母数字、点 (.)、加号 (+) 或连字符 (-)。
class必填。 指定实现协议的类名。
flags必填。 如果协议是URL协议,则设置为STREAM_IS_URL。默认为 0,本地流。

返回值

成功时返回 true,失败时返回 false。如果协议已经有处理程序,则返回 false。

示例:

下面的示例显示如何使用stream_register_wrapper()注册流包装器的函数。

<?php
class VariableStream {
  //实现类似方法的代码
  //stream_open、stream_write等
}

//检查'var'流是否存在
//包装器,如果存在则取消注册
$existed = in_array("var", stream_get_wrappers());
if ($existed) {
  stream_wrapper_unregister("var");
}

//注册'var'流包装器
stream_register_wrapper("var", "VariableStream");

//打开文件
$fp = fopen("var://test.txt", "w+");

//向其中写入一些内容
fwrite($fp, "line1 content\n");
fwrite($fp, "line2 content\n");
fwrite($fp, "line3 content\n");

//获取文件的起始位置
rewind($fp);

//读取文件内容
while (!feof($fp)) {
  echo fgets($fp);
}

//关闭文件
fclose($fp);

//恢复'var'流包装器
//如果以前存在
if ($existed) {
  stream_wrapper_restore("var");
}
?> 

上述代码的输出将是:

line1 content
line2 content
line3 content