<?php
namespace nur\v\base;

use nur\A;
use nur\v\model\IPage;

abstract class AbstractPage extends ComponentPrintable implements IPage {
  /** @see AbstractPageContainer::CONFIGURE_OPTIONS() */
  function CONFIGURE_OPTIONS(): ?array {
    return static::CONFIGURE_OPTIONS;
  } const CONFIGURE_OPTIONS = null;

  /** @see AbstractPageContainer::SELF() */
  function SELF(): ?string {
    return static::SELF;
  } const SELF = null;

  /** @see AbstractPageContainer::TITLE() */
  function TITLE(): ?string {
    return static::TITLE;
  } const TITLE = null;

  function beforeConfig(array &$config): void {
    A::merge_nz($config, [
      "configure_options" => $this->CONFIGURE_OPTIONS(),
      "self" => $this->SELF(),
      "title" => $this->TITLE(),
    ]);
  }

  function getSelfRelativePrefix(): string {
    return $this->configGet("prefix");
  }
}
