Skip to content

CS: Výchozí hodnoty v entitě

vojtech-dobes edited this page Mar 14, 2012 · 2 revisions

Výchozí hodnoty entity lze definovat dvěma způsoby:

  1. Anotací (pouze skalární hodnoty)
/**
 * @property $foo {default abc}
 */
  1. Metodou s předepsaným názvem getDefault<Property>
protected function getDefaultFoo()
{
    return array();
}

Platí, že anotace má před metodou přednost - tj. pokud je v definici property uvedeno {default ...}, metoda nikdy nebude zavolána.

Výchozí hodnotou může být cokoliv, co lze předat setteru odpovídající property. Například property typu DateTime přijímá jakoukoliv platnou řetězcovou hodnotu ($this->registered = 'now';), a proto i výchozí hodnota může být zadána v anotaci:

/**
 * @property DateTime $registered {default now}
 */

Do anotací lze uvést skalární hodnoty a konstanty (globální i třídní):

/**
 * @property $foo {default abc} řetězec
 * @property $foo {default "abc"} řetězec v uvozovkách
 * @property $foo {default 123.52} číslo
 * @property $foo {default TRUE} globální konstanta
 * @property $foo {default self::FOO} třídní konstanta
 */

Pomocí zvláštní konstanty DEFAULT_VALUE lze property zresetovat a vynutit doplnění výchozí hodnoty bez ohledu na současnou hodnotu.

$e->foo = Orm\IEntity::DEFAULT_VALUE;

Pokud výchozí hodnota není definovaná, je hodnota property se rovná NULL.

Clone this wiki locally