PHP Symfony - příklad jak použít Event, EventListener a EventDispatcher
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
Dobrý den,
zde je praktická ukázka použití Event, EventListener a EventDispatcher v Symfony frameworku:
CONTROLLER
-----------------------------------------------------
EVENT
Event/DemoEvent.php
-----------------------------------------------------
EVENT LISTENER
EventLister/DemoListener.php
-----------------------------------------------------
Výstupem pro
PS: 100% funkční oveřené Show english version
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ĚĎ
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é Show english version