Build Status Coverage Status

Package that provide implementations of PSR-7 StreamInterface and PSR-17 StreamFactoryInterface but also adds stream and socket related funcitonality. It is designed for use with socket connections.

Installation

Install with Composer;

composer require phrity/net-stream

Versions

Version PHP
1.0 ^7.4|^8.0 Initial version

Stream class

The Phrity\Net\Stream class is fully compatible with PSR-7 StreamInterface, implementing specified methods but no extras. Can be used anywhere where PSR-7 StreamInterface compability is expected.

class Stream {

    // Constructor

    public function __construct(resource $resource); // Must be a resource of type stream

    // PSR-7 methods

    public function __toString(): string;
    public function close(): void;
    public function detach(): ?resource;
    public function getSize(): ?int;
    public function tell(): int;
    public function eof(): bool;
    public function isSeekable(): bool;
    public function seek(int $offset, int $whence = SEEK_SET): void;
    public function rewind(): void;
    public function isWritable(): bool;
    public function write(string $string): int;
    public function isReadable(): bool;
    public function read(int $length): string;
    public function getContents(): string;
    public function getMetadata(?string $key = null): mixed;
}

SocketStream class

The Phrity\Net\SocketStream class extends Phrity\Net\Stream and adds extra methods usable on a socket stream.

class SocketStream {

    // Methods

    public function getRemoteName(): ?string; // Returns remote name
    public function isBlocking(): ?bool; // If stream is blocking or not
    public function setBlocking(bool $enable): bool; // Change blocking mode
}

SocketServer class

The Phrity\Net\SocketServer class enables a server on local socket.

class SocketServer {

    // Constructor

    public function __construct(UriInterface $uri, int $flags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN);

    // Methods

    public function close(): void; // Close socket server
    public function accept(?int $timeout = null): ?SocketStream; // Accept connection on socket server
    public function getTransports(): array; // Ge available transports
    public function setBlocking(bool $enable): bool; // Change blocking mode
    public function getMetadata($key = null): mixed; // Get metadata for socket server
}

StreamFactory class

The Phrity\Net\StreamFactory class is fully compatible with PSR-17 StreamFactoryInterface, implementing specified methods and some extras. Can be used anywhere where PSR-17 StreamFactoryInterface compability is expected.

class StreamFactory {

    // Constructor

    public function __construct();

    // PSR-17 methods

    public function createStream(string $content = ''): StreamInterface;
    public function createStreamFromFile(string $filename, string $mode = 'r'): StreamInterface;
    public function createStreamFromResource(resource $resource): StreamInterface; // Must be a resource of type stream

    // Additional methods

    public function createSocketStreamFromResource($resource): SocketStream; // Create a socket stream
    public function createSocketServer(UriInterface $uri, int $flags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN): SocketServer; // Create a socket server
}