<?php
namespace nur\v\model;

/**
 * Interface IPage: un composant pleine page, ayant une structure spécifique
 */
interface IPage extends IComponent, IChildComponent {
  /**
   * retourner les options à utiliser pour la configuration automatique avec
   * {@link config::configure()}, ou null pour la valeur par défaut.
   */
  function CONFIGURE_OPTIONS(): ?array;

  /**
   * retourner le chemin vers le *script* courant par rapport à la racine de
   * l'application, e.g 'index.php' s'il est différent de la valeur par défaut
   * basename($_SERVER["SCRIPT_NAME"]), ou null pour utiliser la valeur par
   * défaut
   *
   * celà permet de calculer les chemins relatifs aux resources, même si
   * l'application n'est pas servie à la racine ou si on utilise path_info
   */
  function SELF(): ?string;

  /**
   * retourner le titre de la page, ou null pour utiliser la valeur par défaut
   */
  function TITLE(): ?string;

  /**
   * retourner le préfixe à rajouter aux chemins relatifs exprimés depuis la
   * racine pour les atteindre depuis la page courante
   */
  function getSelfRelativePrefix(): string;
}