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