# stream_wrapper_register

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

stream_wrapper_register — 注册一个用 PHP 类实现的 URL 封装协议

### 说明

stream_wrapper_register ( string `$protocol` , string `$classname` [, int `$flags` = 0 ] ) : bool

允许用户实现自定义的协议处理器和流，用于所有其它的文件系统函数中（例如 fopen()，fread() 等）。

### 参数

`protocol`

  待注册的封装的名字。

`classname`

  实现了`protocol`的类名。

`flags`

  Should be set to `STREAM_IS_URL` if `protocol` is a URL protocol. Default is 0, local stream.

### 返回值

成功时返回 `TRUE`， 或者在失败时返回 `FALSE`。

当 `protocol` 已经有处理者时，stream_wrapper_register() 将返回`FALSE`

### 更新日志

版本 | 说明
--- | ---
5.2.4 | 添加 `flags` 参数.

### 范例

Example #1 如何注册一个 stream wrapper

    <?php
    $existed = in_array("var", stream_get_wrappers());
    if ($existed) {
        stream_wrapper_unregister("var");
    }
    stream_wrapper_register("var", "VariableStream");
    $myvar = "";

    $fp = fopen("var://myvar", "r+");

    fwrite($fp, "line1\n");
    fwrite($fp, "line2\n");
    fwrite($fp, "line3\n");

    rewind($fp);
    while (!feof($fp)) {
        echo fgets($fp);
    }
    fclose($fp);
    var_dump($myvar);

    if ($existed) {
        stream_wrapper_restore("var");
    }

    ?>

以上例程会输出：

    line1
    line2
    line3
    string(18) "line1
    line2
    line3
    "

### 参见

- The streamWrapper prototype class
- Example class registered as stream wrapper
- stream_wrapper_unregister() - Unregister a URL wrapper
- stream_wrapper_restore() - Restores a previously unregistered built-in wrapper
- stream_get_wrappers() - 获取已注册的流类型