} require_once __DIR__ . '/../vendor/autoload.php'; use PHPFluent\EventManager\Manager; use PHPFluent\EventManager\Listener\PThread; /** * Personalized Thread class * @see http://php.net/pthreads * @see http://php.net/class.thread */ class MyThread extends \Thread { /** * the script process to run in background */ public function run() { echo "-thread.start: " . date('H:i:s') . PHP_EOL; sleep(5); echo "-thread...end: " . date('H:i:s') . PHP_EOL; } } // create the listener $listener = new PThread(new MyThread()); $manager = new Manager(); $manager->addEventListener('thread', $listener); // dispatch listener in background. $manager->dispatchEvent('thread'); //continue executing echo '* Script Execution Continued...' . PHP_EOL; //sleep(2); echo '* Script Execution Finished!' . PHP_EOL;
<?php require_once __DIR__ . '/../vendor/autoload.php'; use PHPFluent\EventManager\Event; use PHPFluent\EventManager\Listener; use PHPFluent\EventManager\Manager; class MyListener implements Listener { public function execute(Event $event, array $params = array()) { echo 'For event "' . $event->getName() . '" I will display the params:' . PHP_EOL; echo json_encode($params) . PHP_EOL; } } $eventManager = new Manager(); $eventManager->addEventListener('bar', new MyListener()); $eventManager->dispatchEvent('bar', array('Henrique Moody', 'Kinn Coelho'));
<?php require_once __DIR__ . '/../vendor/autoload.php'; use PHPFluent\EventManager\Event; use PHPFluent\EventManager\Manager; $eventManager = new Manager(); $eventManager->addEventListener('bar', function (Event $event) { echo 'I will stop event propagation! >:(' . PHP_EOL; $event->stopPropagation(); }); $eventManager->addEventListener('bar', function (Event $event) { echo 'I will not be executed :(' . PHP_EOL; }); // Dispatch event $eventManager->dispatchEvent('bar');
function someFunction(Manager $eventManager) { echo "I'm executing\n"; echo "Some operation\n"; $eventManager->dispatchEvent("updated"); }
<?php require_once __DIR__ . '/../vendor/autoload.php'; use PHPFluent\EventManager\Manager; use PHPFluent\EventManager\Listener\Process; // Create a process to be executed in background. // Parameter can be callable or Arara\Process\Action\Action instance. $process = new Process(function () { echo "-process.start: " . date('H:i:s') . PHP_EOL; sleep(5); echo "-process...end: " . date('H:i:s') . PHP_EOL; }); $manager = new Manager(); $manager->addEventListener('process', $process); // dispatch a non-blocking execution $manager->dispatchEvent('process'); // continue executing echo '* Script Execution Continued...' . PHP_EOL; sleep(1.5); echo '* Script Execution Finished!' . PHP_EOL;
<?php require_once __DIR__ . '/../vendor/autoload.php'; use PHPFluent\EventManager\Event; use PHPFluent\EventManager\Manager; $eventManager = new Manager(); // Use no argument $eventManager->addEventListener('foo', function () { echo 'Listener 1' . PHP_EOL; }); // Use `Event` as first argument $eventManager->addEventListener('foo', function (Event $event) { echo 'Listener 2: ' . $event->getName() . PHP_EOL; }); // Use `Event` as first argument and an array as seccond $eventManager->addEventListener('foo', function (Event $event, array $params) { echo 'Listener 3: ' . $event->getName() . ', ' . json_encode($params) . PHP_EOL; }); // Use an array as first argument $eventManager->addEventListener('foo', function (array $params) { echo 'Listener 4: ' . json_encode($params) . PHP_EOL; }); // Use an array as first argument and `Event` as seccond $eventManager->addEventListener('foo', function (array $params, Event $event) { echo 'Listener 3: ' . json_encode($params) . ', ' . $event->getName() . PHP_EOL; }); // Dispatch event $eventManager->dispatchEvent('foo', range(1, 10));