nur-sery/nur_src/b/io/IWriter.php

72 lines
2.2 KiB
PHP

<?php
namespace nur\b\io;
/**
* Interface IWriter: abstraction d'une destination dans laquelle on peut écrire
* (fichier, flux, etc.)
*/
interface IWriter {
## gestion de l'indentation
/** réinitialiser l'indentation */
function resetIndent(?int $indentLevel=0, ?string $indentString=null): void;
/** augmenter le niveau d'indentation et retourner le niveau précédent */
function indent(): int;
/** diminuer le niveau d'indentation */
function dedent(): void;
## écriture sur le flux
/** si ce writer est basé sur une resource, la retourner, sinon null. */
function getResource();
/** vérifier si ce writer écrit sur un terminal */
function isatty(): bool;
/** si ce writer est basé sur une resource, ajouter un filtre. */
function appendFilter(string $filterName, ?int $readWrite=null, $params=null): void;
/** si ce writer est basé sur une resource, ajouter un filtre. */
function prependFilter(string $filterName, ?int $readWrite=null, $params=null): void;
/** si ce writer est basé sur une resource, spécifier l'encoding. */
function setEncodingFilter(string $to, string $from="utf-8"): void;
/**
* obtenir la chaine qui serait affichée avec l'une des fonctions write() ou
* print()
*/
function toString(string $sep, array $values, bool $updateIndent=true): string;
/**
* écrire une suite de valeurs collées les unes aux autres dans la destination
*/
function write(...$values): IWriter;
/**
* afficher une suite de valeurs collées les unes aux autres suivie d'un saut
* à la ligne
*/
function wnl(...$values): IWriter;
/**
* écrire une suite de valeurs séparées par des espaces dans la destination.
* les valeurs null et false sont ignorées (comme inexistantes)
*/
function print(...$values): IWriter;
/**
* afficher une suite de valeurs séparées par des espaces suivie d'un saut à
* la ligne. les valeurs null et false sont ignorées (comme inexistantes)
*/
function pnl(...$values): IWriter;
/** afficher les lignes */
function writeLines(iterable $lines): IWriter;
/** fermer le fichier si c'est nécessaire */
function close(bool $close=true): void;
}