1. Go to this page and download the library: Download innmind/io library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
innmind / io example snippets
use Innmind\IO\IO;
use Innmind\OperatingSystem\Factory;
use Innmind\TimeContinuum\Earth\ElapsedPeriod;
use Innmind\Stream\Streams;
use Innmind\Immutable\Str;
$os = Factory::build();
$streams = Streams::fromAmbienAuthority();
$io = IO::of($os->sockets()->watch(...));
$chunks = $io
->readable()
->wrap(
$streams
->readable()
->acquire(\fopen('/some/file.ext', 'r')),
)
->toEncoding(Str\Encoding::ascii)
// or call ->watch() to wait forever for the stream to be ready before
// reading from it
->timeoutAfter(ElapsedPeriod::of(1_000))
->chunks(8192) // max length of each chunk
->lazy()
->sequence();
use Innmind\IO\IO;
use Innmind\OperatingSystem\Factory;
use Innmind\TimeContinuum\Earth\ElapsedPeriod;
use Innmind\Stream\Streams;
use Innmind\Immutable\Str;
$os = Factory::build();
$streams = Streams::fromAmbienAuthority();
$io = IO::of($os->sockets()->watch(...));
$lines = $io
->readable()
->wrap(
$streams
->readable()
->acquire(\fopen('/some/file.ext', 'r')),
)
->toEncoding(Str\Encoding::ascii)
// or call ->watch() to wait forever for the stream to be ready before
// reading from it
->timeoutAfter(ElapsedPeriod::of(1_000))
->lines()
->lazy()
->sequence();
use Innmind\IO\{
IO,
Readable\Frame,
};
use Innmind\OperatingSystem\Factory;
use Innmind\TimeContinuum\Earth\ElapsedPeriod;
use Innmind\Socket\{
Address,
Client,
};
use Innmind\Stream\Streams;
use Innmind\Immutable\{
Str,
Sequence,
};
$socket = Client\Unix::of(Address\Unix::of('/tmp/foo'))->match(
static fn($socket) => $socket,
static fn() => throw new \RuntimeException;
);
$os = Factory::build();
$io = IO::of($os->sockets()->watch(...));
$frame = $io
->sockets()
->clients()
->wrap($socket)
->toEncoding(Str\Encoding::ascii)
->timeoutAfter(ElapsedPeriod::of(1_000))
->heartbeatWith(static fn() => Sequence::of(Str::of('heartbeat')))
->frames(Frame\Line::new())
->one()
->match(
static fn($line) => $line,
static fn() => throw new \RuntimeException,
);
use Innmind\IO\IO;
use Innmind\OperatingSystem\Factory;
use Innmind\TimeContinuum\Earth\ElapsedPeriod;
use Innmind\Stream\Streams;
use Innmind\Socket\Address\Unix;
use Innmind\Immutable\{
Str,
Fold,
Either,
};
$os = Factory::build();
$streams = Streams::fromAmbienAuthority();
$io = IO::of($os->sockets()->watch(...));
$io
->readable()
->wrap(
$os
->sockets()
->connectTo(Unix::of('/some/socket')),
)
->toEncoding('ASCII')
// or call ->watch() to wait forever for the stream to be ready before
// reading from it
->timeoutAfter(ElapsedPeriod::of(1_000))
->chunks(8192) // max length of each chunk
->fold(
Fold::with([]),
static function(array $chunks, Str $chunk) {
$chunks[] = $chunk->toString();
if ($chunk->contains('quit')) {
return Fold::result($chunks);
}
if ($chunk->contains('throw')) {
return Fold::fail('some error');
}
return Fold::with($chunks);
},
)
->match(
static fn(Either $result) => $result->match(
static fn(array $chunks) => doStuff($chunks),
static fn(string $error) => throw new \Exception($error), // $error === 'some error'
),
static fn() => throw new \RuntimeException('Failed to read from the stream or it timed out'),
);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.