stream_wrapper_register

Register a URL wrapper implemented as a PHP class

&reftitle.description; `bool` `stream_wrapper_register` `string` `protocol` `string` `class` `int` `flags` 0

Allows you to implement your own protocol handlers and streams for use with all the other filesystem functions (such as `fopen`, `fread` etc.).

&reftitle.parameters;

`protocol`

- The wrapper name to be registered. Valid protocol names must contain alphanumerics, dots (.), plusses (+), or hyphens (-) only.

`class`

- The classname which implements the `protocol`.

`flags`

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

&reftitle.returnvalues;

&return.success;

`stream_wrapper_register` will return &false; if the `protocol` already has a handler.

&reftitle.examples;

### How to register a 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");
    }

    ?>

&example.outputs;

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

&reftitle.seealso;

- The class.streamwrapper prototype class
- stream.streamwrapper.example-1
- `stream_wrapper_unregister`
- `stream_wrapper_restore`
- `stream_get_wrappers`