<?php
namespace nur\data\types;

use nur\b\params\parametrable_utils;

/**
 * variante de {@link Tparametrable} qui n'utilise pas {@link Metadata} pour
 * éviter une boucle infinie.
 */
trait _Tparametrable {
  use _Tparametrable0;

  function setParametrableParams(?array $params): void {
    parent::setParametrableParams($params);
    $parametrables = $this->getParametrableParamsParametrables();
    parametrable_utils::set_params($parametrables, $this, $params, self::PARAMETRABLE_PARAMS_SCHEMA);
  }

  function initParametrableParams(?array $params, bool $setParametrableParams=true): void {
    parent::initParametrableParams(null);
    $parametrables = $this->getParametrableParamsParametrables();
    parametrable_utils::set_defaults($parametrables, $this, self::PARAMETRABLE_PARAMS_SCHEMA);
    if ($setParametrableParams) $this->setParametrableParams($params);
  }
}
