Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fzaninotto/Streamer
Object-Oriented API for PHP streams
https://github.com/fzaninotto/Streamer
Last synced: 4 days ago
JSON representation
Object-Oriented API for PHP streams
- Host: GitHub
- URL: https://github.com/fzaninotto/Streamer
- Owner: fzaninotto
- License: mit
- Archived: true
- Created: 2012-06-25T22:45:18.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2017-01-31T08:20:20.000Z (almost 8 years ago)
- Last Synced: 2024-08-01T21:54:13.239Z (3 months ago)
- Language: PHP
- Size: 17.6 KB
- Stars: 267
- Watchers: 13
- Forks: 31
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-php - Streamer - A simple object-orientated stream wrapper library. (Table of Contents / Streams)
- awesome-projects - Streamer - A simple object-orientated stream wrapper library. (PHP / Streams)
- awesome-php - Streamer - A simple object-orientated stream wrapper library. (Table of Contents / Streams)
- awesome-php-cn - Streamer - 一个简单的面向对象流包装器库. (目录 / 流 Streams)
README
# Streamer
Streamer is an Object-Oriented API for PHP streams.
## Why should I use Streams?
A stream is a flow of bytes from one container to the other. You already use streams a lot in PHP, for instance each time you load a file into memory (`file_get_contents()`). You should explicitly use streams each time that:
* You need to access data from a container, but you don't know the size of this container (e.g. reading from STDIN, or a web service using streaming)
* You need to start processing data from a container before the whole transfer is finished (e.g. start zipping a file before it's all in memory)
* You need to save time and memory## What is Streamer?
PHP has a very elaborate stream API ; unfortunately, it uses functions for most stream operations (except for wrappers - go figure). Streamer is a generic library focusing on offering an object-oriented API to streams, and only that.
## Installation
Streamer is published on [packagist.org](http://packagist.org/packages/fzaninotto/Streamer), so you can add it to your `composer.json` file for an easy installation:
```sh
composer require fzaninotto/Streamer
```or
```json
{
"require": {
"fzaninotto/Streamer": "0.0.1"
}
}
```## Example
```php
isEOF()) {
$image .= $stream->read();
}// pipe dreams!
$stream1 = new Stream(fopen('smiley.png', 'r'));
$stream2 = new Stream(fopen('tmp.png', 'w'));
// copy the contents from the first stream to the second one
$stream1->pipe($stream2);// factory
$fileStream = FileStream::create('smiley.png', 'r');
print_r($fileStream);$networkStream = NetworkStream::create('tcp://www.google.com:80');
print_r($networkStream);```
### Credits
Streamer is heavily inspired by other Stream class implementations:
* [Guzzle](https://github.com/guzzle/streams/blob/ce5a645ee89ea0914db1f601b917b8bf211e3630/src/Stream.php)
* [Joomla's Filesystem Stream](http://api.joomla.org/__filesource/fsource_Joomla-Platform_FileSystem--_librariesjoomlafilesystemstream.php.html)
* [Node.Js Stream API](http://nodejs.org/api/stream.html)