Nahlášení zprávy #77717 (Privátní)

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é :D 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($u­ser); // 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\Sub­scriber {
private $logger;

public function __construct($log­ger)
{
$this->logger = $logger;
}

public function getSubscribedE­vents()
{
// záznamy jsou ve tvaru Třída::událost => metoda, která se zavolá v listeneru

return array(
"UserFacade::o­nUserCreated" => "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\Log­Listener:
tags: [kdyby.subscriber] # tento řádek je důležitý

[/code]

takhle pokaždý, když se vytvoří nový uživatel, se automaticky zavolá metoda LogListener::u­serCreated(). 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

Přidáno Autor Stav Pracovník
11.5.2016 18:40 Avatar Danny Zamítnuto
Vydáno ve verzi Simplex social 6.0 - Saturn
Avatar Neaktivní uživatel
Aktivity