Nahlášení zprávy #77717 (Privátny)
Danny nahlásil zprávu od člena Martin Konečný (pavelco1998) ze dne
18:11. Text zprávy je následující:
na log jsou události jako dělané když použiješ kdyby\events, uděláš jen něco takovýho
[code]
class UserFacade {
public $onUserCreated = array(); // všechny události musí začínat prefixem
"on"
public function createUser($data)
{
$user = new User($data);
$this->em->persist($user);
$this->onUserCreated($user); // projede všechny funkce, které se zařadily do fronty v $onUserCreated, postupně je všechny zavolá a předá objekt $user
$this->em->flush();
} }
// listener class LogListener implements Kdyby\Events\Subscriber {
private $logger;
public function __construct($logger)
{
$this->logger = $logger;
}
public function getSubscribedEvents()
{
// záznamy jsou ve tvaru Třída::událost => metoda, která se zavolá v
listeneru
return array(
"UserFacade::onUserCreated" => "userCreated"
);
}
public function userCreated($user)
{
$this->logger->log("Nový uživatel byl vytvořen -
{$user->name}");
}
}
class Logger {
public function log()
{
// uložení zprávy
}
}
[/code]
v config.neon pak jen zaregistruješ ten listener
[code]
services:
logListener:
class: App\Model\LogListener:
tags: [kdyby.subscriber] # tento řádek je důležitý
[/code]
takhle pokaždý, když se vytvoří nový uživatel, se automaticky zavolá metoda LogListener::userCreated(). Díky tomu taky vyhodíš závislost User fasády na tom loggeru.
Občas se ty eventy daj použít i jako "pre" event, tzn. třeba událost ještě před tim, než se ten uživatel vytvoří. Můžeš tím udělat nějakou validaci apod
Pridané | Autor | Stav | Pracovník |
---|---|---|---|
11.5.2016 18:40 | Danny |
Zamietnuté Vydané vo verzii Simplex social 6.0 - Saturn |
Neaktivní uživatel |