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

The English language is translated by machine - the translator can modify eg cited codes = it is better to use codes from the Czech original.

PHP Symfony - example how to use Event, EventListener and EventDispatcher

Hello,

I have trouble understanding how to use PHP Symfony Event, EventListener and EventDispatcher in PHP. What is in the documentation refers to the kernel, etc., and that doesn't make much sense to me. I have no idea how to use it to just print a message that EventListener would print via echo.

Thanks

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é


The English language is translated by machine - the translator can modify eg cited codes = it is better to use codes from the Czech original.

PHP Symfony - example how to use Event, EventListener and EventDispatcher

Hi,

here is a practical example of using Event, EventListener and EventDispatcher in the Symfony framework:


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();
}
}




The output for $dispatcher->dispatch(new DemoEvent(), 'demo.created'); is:

Byl zavolan DemoListener - hodnota je: string


PS: 100% funkční oveřené
Tento web používá k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte. Další informace