Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions cs/docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@ Příručka vás seznámí se všemy aspekty Lean Mapperu a pomůže vám vytě
7. [EntityFactory](entity-factory/)
8. [Integrace Lean Mapperu do aplikace](integrace-do-aplikace/)
9. [SQL strategie](sql-strategie/)
10. [Systém událostí](system-udalosti/)

[Entity »](entity/) |
2 changes: 1 addition & 1 deletion cs/docs/sql-strategie.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,4 +59,4 @@ Všimněte si dovětku `#union`, který zakončuje definici vazby - validní jso
Při použití filtrů je každý filtr aplikován na každou samostatnou část UNION dotazu - viz příklad výše, kdy je filtrem přidána klauzule `LIMIT` do každé části dotazu.


[« Integrace Lean Mapperu do aplikace](/cs/docs/integrace-do-aplikace/) |
[« Integrace Lean Mapperu do aplikace](/cs/docs/integrace-do-aplikace/) | [Systém událostí »](/cs/docs/system-udalosti/)
62 changes: 62 additions & 0 deletions cs/docs/system-udalosti.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
---
title: Systém událostí
---

* [Úvod](#page-title)
* [Registrace událostí](#toc-registrace)
* [Metoda initEvents()](#toc-initEvents)
* [Události](#toc-udalosti)


[Repositáře](/cs/docs/repositare/) 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í {#toc-registrace}

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.

``` php?start_inline=1
$authorRepository = new AuthorRepository($connection, $mapper, $entityFactory);

$authorRepository->onBeforePersist[] = function (Author $author) {
// obsluha udalosti
};
$authorRepository->onAfterCreate[] = array($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() {#toc-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ář.

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


## Události {#toc-udalosti}

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](/cs/docs/sql-strategie/) |
1 change: 1 addition & 0 deletions cs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ redirect_from: "/dokumentace/"
7. [EntityFactory](/cs/docs/entity-factory/)
8. [Integrace Lean Mapperu do aplikace](/cs/docs/integrace-do-aplikace/)
9. [SQL strategie](/cs/docs/sql-strategie/)
10. [Systém událostí](/cs/docs/system-udalosti/)
* [Ukázky použití a zajímavá řešení](/cs/tutorials/)
* [Changelog](/cs/changelog/)
* [Download](/cs/download/)
Expand Down