63 lines
2.2 KiB
PHP
63 lines
2.2 KiB
PHP
|
<?php
|
||
|
namespace nur\mapper\base\capacitor;
|
||
|
|
||
|
/**
|
||
|
* Interface ICapacitor: objet qui permet d'accumuler des données pour les
|
||
|
* fournir en une seule fois au moment voulu
|
||
|
*/
|
||
|
interface ICapacitor {
|
||
|
const KEY_SCHEMA = [
|
||
|
"name" => ["key", null, "nom de la clé", "required" => true],
|
||
|
"primary" => ["bool", false, "est-ce une clé primaire?"],
|
||
|
"reverse" => ["?bool", null, "sens du tri par défaut"],
|
||
|
];
|
||
|
|
||
|
/**
|
||
|
* spécifier les clés à traquer lors du chargement d'une donnée.
|
||
|
*
|
||
|
* si une clé est marquée comme primaire, alors les doublons éventuels sont
|
||
|
* supprimés au fur et à mesure du chargement.
|
||
|
*/
|
||
|
function setKeys(array $keys, ?string $channel=null): void;
|
||
|
|
||
|
const SORT_SCHEMA = [
|
||
|
"name" => ["key", null, "nom de la clé", "required" => true],
|
||
|
"reverse" => ["?bool", null, "sens du tri"],
|
||
|
];
|
||
|
|
||
|
/**
|
||
|
* trier les données selon les clés spécifiées. si $keys===null, alors toutes
|
||
|
* les clés définies au préalable avec {@link setKeys()} sont utilisées.
|
||
|
*
|
||
|
* $keys ne doit mentionner que des clés déclarées avec {@link setKeys()}
|
||
|
*/
|
||
|
function sort(?array $keys=null, ?string $channel=null): void;
|
||
|
|
||
|
/**
|
||
|
* charger l'accumulateur avec un élément.
|
||
|
*
|
||
|
* Dans le cas où $item === null, le comportement est particulier:
|
||
|
* - Si aucune clé primaire n'a été définie, l'élément est systématiquement
|
||
|
* chargé
|
||
|
* - Si une clé primaire a été définie, l'élément est ignoré, sauf si
|
||
|
* $pkvalues est spécifiée. Dans ce cas, $pkvalues est utilisé comme clé
|
||
|
* primaire
|
||
|
*/
|
||
|
function charge($item, ?string $channel=null, $pkvalues=null): void;
|
||
|
|
||
|
/** méthode de convenance pour charger l'accumulateur avec plusieurs éléments */
|
||
|
function chargeAll(iterable $items, ?string $channel=null): void;
|
||
|
|
||
|
/**
|
||
|
* obtenir un élément à partir de sa clé primaire. une clé primaire doit avoir
|
||
|
* été définie au préalable avec {@link setKeys()}
|
||
|
*
|
||
|
* si aucune clé primaire n'a été définie, alors le seul moyen d'atteindre un
|
||
|
* élément est par son index
|
||
|
*/
|
||
|
function getItem($pkvalues, ?string $channel=null, $default=null);
|
||
|
|
||
|
/** décharger l'accumulateur en une seule fois */
|
||
|
function discharge(?string $channel=null, bool $remove=true): iterable;
|
||
|
}
|