PHP Symfony - příklad jak použít Event, EventListener a EventDispatcher

Autor AnnaGarcia
Publikováno 07.12.2020
Kategorie programovani
Stav Vyřešeno
Dobrý den,

mám problém pochopit jak použít v PHP Symfony Event, EventListener a EventDispatcher. To co je v dokumentaci odkazuje na kernel atd a to mně moc smysl nedává. Vůbec nevím jak to použít i jen k prostému vypsání hlášky, kterou by EventListener vypsal přes echo.

Díky


Odpovědi na dotaz 1

Show english version

RE: PHP Symfony - příklad jak použít Event,…

Autor Hyacint
Publikováno 15.01.2021
Kategorie programovani
Stav Zkontrolováno
Dobrý den,

zde je praktická ukázka použití Event, EventListener a EventDispatcher v Symfony frameworku:


CONTROLLER
-----------------------------------------------------

...........
use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Contracts\EventDispatcher\Event;
use App\Event\DemoEvent;
use App\EventListener\DemoListener;
.............
$dispatcher = new EventDispatcher();
$listener = new DemoListener();
$dispatcher->addListener('demo.created', array($listener, 'onDemoEvent'));
$dispatcher->dispatch(new DemoEvent(), 'demo.created');
.............



EVENT
Event/DemoEvent.php
-----------------------------------------------------

namespace App\Event;

use App\Entity\Demo;
use Symfony\Contracts\EventDispatcher\Event;

class DemoEvent extends Event
{
protected $var;

public function __construct()
{
$this->var = 'string';
}

public function getVar()
{
return $this->var;
}
}



EVENT LISTENER
EventLister/DemoListener.php
-----------------------------------------------------

namespace App\EventListener;

use Symfony\Contracts\EventDispatcher\Event;

class DemoListener
{
public function onDemoEvent(Event $event)
{
echo "Byl zavolan DemoListener - hodnota je: ".$event->getVar();
}
}




Výstupem pro $dispatcher->dispatch(new DemoEvent(), 'demo.created'); je:

Byl zavolan DemoListener - hodnota je: string


PS: 100% funkční oveřené


1

Show english version

Tento web používá soubory cookie. Dalším procházením tohoto webu vyjadřujete souhlas s jejich používáním.. Více informací zde.