# Writer

Namespace Chevere\Writer

The Writer component provides components that interact with output, error, debug and log streams.

A Writer is defined by the Interfaces\WriterInterface.

# Writers

The Writers component describes a service container providing access to output, error, debug and log writers.

use Chevere\Writer\Writers;

$writers = new Writers();
$output = $writers->output();
$error = $writers->error();

Methods withOutput, withError, withDebug and withLog can be used to specify each writer stream.

# withOutput

Output is the channel used for writing output.

use Chevere\Writer\StreamWriter;
use function Chevere\Writer\streamFor;

$writers = $writers
    ->withOutput(
        writer: new StreamWriter(
            streamFor('/var/stream/output', 'w')
        )
    );

# withError

Error is the channel for writing errors.

use Chevere\Writer\StreamWriter;
use function Chevere\Writer\streamFor;

$writers = $writers
    ->withError(
        writer: new StreamWriter(
            streamFor('/var/stream/error', 'w')
        )
    );

# withDebug

Debug is the channel for writing debug.

use Chevere\Writer\StreamWriter;
use function Chevere\Writer\streamFor;

$writers = $writers
    ->withDebug(
        writer: new StreamWriter(
            streamFor('/var/stream/debug', 'w')
        )
    );

# withLog

Log is the channel for writing log information.

use Chevere\Writer\StreamWriter;
use function Chevere\Writer\streamFor;

$writers = $writers
    ->withLog(
        writer: new StreamWriter(
            streamFor('/var/stream/log', 'w')
        )
    );

# StreamWriter

The StreamWriter component is in charge of writing strings to a stream.

use Chevere\Writer\StreamWriter;
use function Chevere\Writer\streamForString;

$writer = new StreamWriter(
    stream: streamForString('given string')
);
$writer->write('write some');

# Streams

Use function streamFor to create an stream.

use function Chevere\Writer\streamFor;

$stream = streamFor(
    stream: 'php://temp',
    mode: 'r+'
);

Use function streamTemp to create a temp stream (rw+).

use function Chevere\Writer\streamTemp;

$stream = streamTemp($content);