LeanMapper icon indicating copy to clipboard operation
LeanMapper copied to clipboard

Pridat vlastne eventy

Open achtan opened this issue 11 years ago • 1 comments

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;
}
  1. ide o to Events::EVENT_FOO rad by som si do eventov pridal vlastny typ eventu a invokoval ho ked potrebujem
  2. 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)

achtan avatar May 13 '14 08:05 achtan

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!

Tharos avatar May 16 '14 23:05 Tharos