blar/streams

Streams


Keywords
php, Streams
License
LGPL-3.0+

Documentation

License Latest Stable Version Build Status Coverage Status Dependency Status Flattr

blar/streams

Stream functions for PHP.

Examples

Create a new file and write data

$stream = new FileStream('test.txt', FileStream::MODE_CREATE | FileStream::MODE_WRITE);
$stream->write("foo\n");

Write data to an existing file

$stream = new FileStream('test.txt', FileStream::MODE_WRITE);
$stream->write("bar\n");

Read data from file

$stream = new FileStream('test.txt', FileStream::MODE_READ);
$data = $stream->read(3);
echo 'The first 3 bytes from test.txt is ', $data;

Read lines from file

$stream = new FileStream('test.txt', FileStream::MODE_READ);
$line1 = $stream->readLine();
$line2 = $stream->readLine();

Read until

$stream = new FileStream('.htpasswd', FileStream::MODE_READ);
$userName = $stream->readUntil(":");
$password = $stream->readUntil("\n");

Lock file for writing

$stream = new FileStream('test.txt', FileStream::MODE_WRITE);
$stream->lock(FileStream::LOCK_WRITE);
$stream->write("foobar\n");

Wait for write lock

$stream = new FileStream('test.txt', FileStream::MODE_WRITE);
$stream->lock(FileStream::LOCK_WRITE | FileStream::LOCK_WAIT);
$stream->write("foobar\n");

Seek

$stream = new FileStream('test.txt', FileStream::MODE_READ);
$stream->seek(-128);
$stream->read(128);

Rewind (seek to start)

$stream = new FileStream('test.txt', FileStream::MODE_READ);
$stream->seek(42);
$stream->rewind();
if($stream->tell() == 0) {
    echo 'We are now at the start of the file';
}

Tell (the current position in the file)

$stream = new FileStream('test.txt', FileStream::MODE_READ);
$stream->seek(42);
$position = $stream->tell();

Skip some bytes

$stream = new FileStream('test.mp3', FileStream::MODE_READ);
$stream->seek(-128);
$tag = $stream->read(3);
if($tag != 'TAG') {
    echo 'File has no ID3v1 tag';
    die();
}
// Skip the next 30 bytes (title field in ID3v1)
$stream->skip(30);
// Read the next 30 bytes (artist field in ID3v1)
$artist = $stream->read(30);

Netzwerkstream mit TLS

$socket = new NetworkSocket('smtp.gmail.com', 587);
$stream = new NetworkStream($socket);
// EHLO und STARTTLS muss vorher korrekt durchgeführt werden.
$stream->enableEncryption(STREAM_CRYPTO_METHOD_TLS_CLIENT);

Netzwerkstream mit TLS mit Zertifikat und Chain

$socket = new NetworkSocket('smtp.gmail.com', 587);
$stream = new NetworkStream($socket);
// EHLO und STARTTLS muss vorher korrekt durchgeführt werden.
$stream->enableEncryption(STREAM_CRYPTO_METHOD_TLS_CLIENT);
// Zugriff auf das Zertifikat
$certificate = $stream->getPeerCertificate();
// Zugriff auf die Chain
$chain = $stream->getPeerCertificateChain();

Installation

Abhängigkeiten

Abhängigkeiten von blar/streams auf gemnasium anzeigen

Installation per Composer

$ composer require blar/streams

Installation per Git

$ git clone https://github.com/blar/streams.git