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;
 | 
						|
}
 |