Pridat vlastne eventy
v BaseRepository mam metodu:
public function createNew()
{
$className = $this->mapper->getEntityClass($this->getTable());
/** @var $entity BaseEntity */
$entity = new $className;
$this->events->invokeCallbacks(Events::EVENT_FOO, $entity);
return $entity;
}
- ide o to
Events::EVENT_FOOrad by som si do eventov pridal vlastny typ eventu a invokoval ho ked potrebujem - a tym padom ze to je v BaseRepository by som chcel mat ten event registrovany pre kazdy Repository preto by bolo super mat moznost pridat nejake zdielane eventy (napr do Events pridat nejake staticke pole kde budu tie zdielane eventy)
Namísto nějakého createNew v repositáři určitě použij IEntityFactory::createEntity. To proto, protože entity v Lean Mapperu nevznikají pouze v repositářích. Při traverzování mezi entitami se nepoužívají, používá se jenom IMapper a IEntityFactory.
Dále… Ten systém událostí v Lean Mapperu je velmi jednoduchý a přijde mi to vhodné, protože údajně jde snadno propojit s Kdyby\Events a to řeší veškeré složitější případy užití.
Vyzkoušej kdyžtak tedy to propojení s Kdyby, zda-li je to použitelné. Pokud ano, určitě by sis do vlastní implementace IEntityFactory mohl nahookovat spouštění nějaké události onEntityCreate nebo tak.
Pokud to neřeší Tvůj problém, dej vědět a já se nad tím ještě zamyslím. :) Díky!