Systém událostí

Repositáře v Lean Mapperu nabízejí jednoduchý systém událostí, který umožňuje reagovat na vytvoření entity, její aktualizaci, nebo smazání.

Registrace událostí

Jako obsluhu události vždy registrujeme nějaký callback - může se jednat o anonymní funkci, metodu objektu apod. Každá zaregistrovaná obslužná funkce dostane jako parametr entitu, se kterou se pracuje. Výjimku tvoří události onBeforeDelete a onAfterDelete, které kromě entity akceptují i ID databázového záznamu.

$authorRepository = new AuthorRepository($connection, $mapper, $entityFactory);

$authorRepository->onBeforePersist[] = function (Author $author) {
	// obsluha udalosti
};
$authorRepository->onAfterCreate[] = [$obj, 'method'];
$authorRepository->onBeforeDelete[] = 'Class::method';

Pro každou událost je možné zaregistrovat více obsluh, v takovém případě se volají postupně.

Metoda initEvents()

Velmi užitečná je protected metoda LeanMapper\Repository::initEvents, která se volá při vytváření instance repositáře a její přetížení umožňuje nadefinovat události pro daný repositář.

class AuthorRepository extends LeanMapper\Repository
{
	protected function initEvents()
	{
		$this->onBeforePersist[] = ...;
		$this->onAfterPersist[] = ...;
	}
}

Události

Pracovat lze s následujícími událostmi:

  • onBeforePersist
  • onBeforeCreate
  • onBeforeUpdate
  • onBeforeDelete
  • onAfterPersist
  • onAfterCreate
  • onAfterUpdate
  • onAfterDelete

Význam událostí je doufejme dostatečně zřejmý z jejich názvu. Za zmínku stojí, že při persistenci se beforePersist a afterPersist zavolají vždy, zatímco beforeCreate, afterCreate, beforeUpdate a afterUpdate se volají podle situace a podle toho, zda byla nějaká data změněna.

« SQL strategie