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