nur-sery/nur_src/v/model/ILayoutManager.php

70 lines
2.2 KiB
PHP
Raw Normal View History

2023-12-03 22:10:18 +04:00
<?php
namespace nur\v\model;
/**
* Interface ILayoutManager: interface pour un gestionnaire de mise en page
*/
interface ILayoutManager extends ITagsManager {
/**
* indiquer si du contenu est affiché dans la section actuelle. dans ce cas,
* les contenus mis en attente seront affichés eux aussi si on utilise
* {@link flushContent()}
*/
function haveContent(): bool;
/** mettre en attente l'affichage du contenu spécifié */
function add($vs): void;
/**
* $haveContent spécifie s'il y a actuellement du contenu à afficher. mais
* avant d'afficher ce contenu, il faut traiter le contenu en attente.
*
* si $haveContent==true et qu'il y a du contenu en attente, le retourner
* pour affichage. sinon, retourner un tableau vide.
*
* ensuite, le contenu en attente est supprimé
*/
function flushContent(bool $haveContent=false): ?array;
/**
* si {@link haveContent()} est vrai, retourner le contenu encore en attente
* pour affichage, puis {@link flushContent()}
*/
function flush(bool $haveContent=false): ?array;
/**
* @see ITagsManager::push()
* faire {@link flushContent()} avant d'afficher $start
*/
function push($mark, ?array $start=null, ?array $end=null): ?array;
/**
* @see ITagsManager::pop()
* faire {@link flushContent()} avant de dépiler les couches
*/
function pop($mark): ?array;
/** commencer une ligne de façon inconditionnelle */
function startRow($options=null): ?array;
/** terminer la ligne en cours et en commencer une nouvelle */
function row($options=null): ?array;
/** terminer la colonne en cours et en commencer une nouvelle */
function col($size, $options=null): ?array;
/** terminer le panel en cours et en commencer un nouveau */
function panel($title, $options=null): ?array;
/** faire {@link flushContent()} puis terminer explicitement un panel */
function endPanel(): ?array;
/** faire {@link flushContent()} puis terminer explicitement une colonne */
function endCol(): ?array;
/** faire {@link flushContent()} puis terminer explicitement une ligne */
function endRow(): ?array;
/** faire {@link flushContent()} puis terminer toutes les sections en cours */
function end(): ?array;
}