<?php
namespace nur\v\base;

use nur\A;
use nur\v\model\IBasicPage;

/**
 * Class AbstractBasicPage: *exemple* d'implémentation de {@link IBasicPage}
 *
 * cette classe n'est utilisée nulle part dans la hiérarchie, elle n'existe que
 * comme exemple d'implémentation
 */
abstract class AbstractBasicPage extends AbstractPage implements IBasicPage {
  use TBasicPage, TActionSupport;

  /** @see Html5BasicPageContainer::AUTOCLOSE_SESSION() */
  protected function AUTOCLOSE_SESSION(): ?bool {
    return static::AUTOCLOSE_SESSION;
  } const AUTOCLOSE_SESSION = null;

  function beforeConfig(array &$config): void {
    parent::beforeConfig($config);
    A::merge_nn($config, [
      "autoclose_session" => $this->AUTOCLOSE_SESSION(),
    ]);
  }

  /**
   * @var string nom du paramètre qui contient l'action à effectuer.
   * retourner null pour désactiver le support des actions
   */
  const ACTION_PARAM = "a";

  /** @var array liste des actions valides */
  const VALID_ACTIONS = null;
}