nur-sery/nur_src/m/IRowIterator.php

67 lines
2.0 KiB
PHP

<?php
namespace nur\m;
use Iterator;
/**
* Interface IRowIterator: un itérateur pour lire le résultat d'une requête
*/
interface IRowIterator extends Iterator {
/** @return true si cet itérateur a déjà été parcouru jusqu'à la fin */
function isClosed(): bool;
/** retourner toute les lignes du résultat sous forme de tableau */
function all(): array;
/**
* retourner une liste de valeurs [$value] tel que $value = $row[$name] pour
* chaque ligne de résultat de {@link all()}
*
* NB: si $name===null, prendre le premier champ de $row
*/
function allVals(?string $name=null): array;
/**
* retourner la première ligne du résultat, ou $default si aucun élément
* n'est trouvé.
*/
function first($default=null);
/**
* retourner la valeur $row[$name] où $row est la valeur retournée par
* {@link first()}. Retourner $default si {@link first()} ne retourne
* pas de résultat
*
* NB: si $name===null, prendre le premier champ de $row
*/
function firstVal(?string $name=null, $default=null);
/**
* méthode de convenance pour récupérer le nombre de ligne affectées par un
* résultat. équivalent à first()["num_rows"]
*/
function numRows(): int;
/**
* méthode de convenance pour récupérer l'identifiant de la dernière ligne
* insérée. équivalent à first()["insert_id"]
*/
function insertId();
/**
* retourner la première ligne du résultat, ou $default si aucun élément
* n'est trouvé.
*
* si $rewind est true, appeler rewind() à la fin pour s'assurer que
* l'itérateur est fermé correctement.
*
* retourner un tableau [$value, $have_next, $it_nexts]
* - $have_next vaut true s'il y a encore des données qui suivent
* - si $rewind==false, $it_nexts est un itérateur qui permet d'accéder aux
* données suivantes
*/
function one($default=null, ?bool $rewind=null): array;
function peek($default=null, bool $rewind=false): array;
}