Chapter 8. Streams, Wrappers, and Filters

PHP’s streams provide a file-like interface for reading and writing data. A single interface for many different data sources lets you write reusable code: a program that extracts data from a local file can just as easily extract data from a web page, and new streams data sources can immediately be used with any existing streams code. This reuse makes streams a powerful and underused feature in PHP.

Streams were a late addition to PHP 4, arriving only in PHP 4.3. As a result, they’re barely covered in other PHP books, and hardly anyone uses them to their full extent. Therefore, while PHP 5 introduces some new streams features, that’s not the focus of this chapter. Instead, it compares programming with and without streams and discusses the advantages streams provide over alternatives, such as cURL.

An extension that provides a streams interface to a new data source is called a wrapper. The streams interface consists of 14 methods, but you need only implement the methods that make sense for your data source. For example, if you wanted to provide a streams interface to a mailbox of messages, you might not support renaming or rewriting. You can write wrappers in C or in PHP.

The SimpleXML extension is written to use the streams interface for its data. This means that the same function that loads XML from a datafile (simplexml_load_file( ) ) also loads XML from a URL, an FTP site, and any other data source you have a wrapper for.

Sometimes, in ...

Get Upgrading to PHP 5 now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.