The PHP Streams API introduces a unified approach to the handling of
   files and sockets in PHP extension.  Using a single API with standard
   functions for common operations, the streams API allows your extension
   to access files, sockets, URLs, memory and script-defined objects.
   Streams is a run-time extensible API that allows dynamically loaded
   modules (and scripts!) to register new streams.
  
   The aim of the Streams API is to make it comfortable for developers to
   open files, URLs and other streamable data sources with a unified API
   that is easy to understand.  The API is more or less based on the ANSI
   C stdio family of functions (with identical semantics for most of the main
   functions), so C programmers will have a feeling of familiarity with streams.
  
    The streams API operates on a couple of different levels: at the base level,
    the API defines php_stream objects to represent streamable data sources.
    On a slightly higher level, the API defines php_stream_wrapper objects
    which "wrap" around the lower level API to provide support for retrieving
    data and meta-data from URLs.  An additional context
    parameter, accepted by most stream creation functions, is passed to the
    wrapper's stream_opener method to fine-tune the behavior
    of the wrapper.
  
   Any stream, once opened, can also have any number of filters
   applied to it, which process data as it is read from/written to the stream.
  
   Streams can be cast (converted) into other types of file-handles, so that they
   can be used with third-party libraries without a great deal of trouble.  This
   allows those libraries to access data directly from URL sources.  If your
   system has the fopencookie() or
   funopen() function, you can even
   pass any PHP stream to any library that uses ANSI stdio!
  
   
Note: 
     The functions in this chapter are for use in the PHP source code and
     are not PHP functions.  Userland stream functions can be found in the 
     Stream Reference.