Streams were introduced with
PHP
4.3.0 as a way of generalizing file, network, data
compression, and other opperations which share a common
set of functions and uses. In its simplest definition,
a
stream
is a
resource
object which exhibits streamable behavior. That is, it
can be read from or written to in a linear fashion, and
may be able to
fseek()
to an arbitrary locations within the stream.
A
wrapper
is additional code which tells the stream how to handle
specific protocols/encodings. For example, the
http
wrapper knows how to translate a URL into an
HTTP/1.0
request for a file on a remote server. There are many
wrappers built into
PHP
by default (See
付録I
), and additional, custom wrappers may be added either
within a PHP script using
stream_register_wrapper()
, or directly from an extension using the API Reference
in
第43章
. Because any variety of wrapper may be added to
PHP
, there is no set limit on what can be done with them.
To access the list of currently registered wrappers,
use
stream_get_wrappers()
.
A
filter
is a final piece of code which may perform opperations
on data as it is being read from or written to a
stream. Any number of filters may be stacked onto a
stream. Custom filters can be defined in a
PHP
script using
stream_register_filter()
or in an extension using the API Reference in
第43章
. To access the list of currently registered filters,
use
stream_get_filters()
.
A stream is referenced as:
scheme
://
target
scheme
(string) - The name of the wrapper to be used.
Examples include: file, http, https, ftp, ftps,
compress.zlib, compress.bz2, and php. See
付録I
for a list of PHP builtin wrappers. If no wrapper
is specified, the function default is used
(typically
file
://).
target
- Depends on the wrapper used. For filesystem
related streams this is typically a path and
filename of the desired file. For network related
streams this is typically a hostname, often with a
path appended. Again, see
付録I
for a description of targets for builtin
streams.
Streams are an integral part of
PHP
as of version 4.3.0. No steps are required to enable
them.
User designed wrappers can be registered
via
stream_register_wrapper()
, using the class definition shown on that manual
page.
class
php_user_filter is predefined and is an abstract
baseclass for use with user defined filters. See the
manual page for
stream_register_filter()
for details on implementing user defined filters.
Constant | Description |
---|---|
STREAM_USE_PATH | Flag indicating if the stream used the include path. |
STREAM_REPORT_ERRORS | Flag indicating if the wrapper is responsible for raising errors using trigger_error() during opening of the stream. If this flag is not set, you should not raise any errors. |
As with any file or socket related
function, an opperation on a stream may fail for a
variety of normal reasons (i.e.: Unable to connect to
remote host, file not found, etc...). A stream related
call may also fail because the desired stream is not
registered on the running system. See the array
returned by
stream_get_wrappers()
for a list of streams supported by your installation of
PHP
. As with most PHP internal functions if a failure
occours an
E_WARNING
message will be generated describing the nature of the
error.
|
|