1. Go to this page and download the library: Download phoole/event library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
phoole / event example snippets
use Phoole\Event\Provider;
use Phoole\Event\Dispatcher;
use Phoole\Event\Events\StoppableEvent;
// create your own event class
class MyEvent extends StoppableEvent {
}
// an invokable class for event handling
class MyEventHandler
{
public function __invoke(MyEvent $event)
{
echo 'handling event...';
return $event; // optional
}
}
// initiate event dispatcher
$events = new Dispatcher(new Provider());
// bind a callable with default priority 50 (0-100)
$provider->attach(function(myEvent $event) {
echo 'triggered...';
return $event; // optional
});
// bind a invokable object with priority 80
$provider->attach(new MyEventHandler(), 80);
// fire the trigger, wil see output 'handling event...triggered...'
$events->dispatch(new MyEvent());
use Phoole\Event\Events\StoppableEvent;
// my own event hierarchy top
class MyEvent extends StoppableEvent
{
}
// my user authentication event
class MyAuthEvent extends MyEvent
{
protected $userInfo;
public function __construct(array $userInfo)
{
$this->userInfo = $userInfo;
}
public function getUserInfo(): array
{
return $this->userInfo;
}
}
$provider = new Provider();
$events = new Dispatcher($provider);
// attach a listener to the event hierarchy top
$provider->attach(function(MyEvent $event) {
echo 'Event '.get_class($event).' fired';
return $event; // optional
});
// attach a listener for logging users
$provider->attach(function(MyAuthEvent $event)) use ($logger) {
$logger->info(sprintf("User '%s' logged", $event->getUserInfo()['name']));
return $event; // optional
});
...
// upon user logged in, trigger the event
// BOTH listeners will process THIS event
$events->dispatcher(new MyAuthEvent($userInfo));
use Phoole\Event\ListenerCapableTrait;
use Phoole\Event\ListenerCapableInterface;
// my listener class
class MyListener implements ListenerCapableInterface
{
use ListenerCapableTrait;
// define on listener method
public function MethodOne(MyEvent $event)
{
echo 'handling MyEvent in MethodOne...';
}
// define another listener method
public function MethodTwo(MyEvent $event)
{
echo 'handling MyEvent in MethodTwo...';
}
// config this listener
protected function eventsListening()
{
return [
'MethodOne',
['MethodTwo', 80] // with priority 80
];
}
}
// global dispatcher & provider
$provider = new Provider();
$events = new Dispatcher($provider);
// set provider is enough
$listener = new MyListener();
$listener->setProvider($provider);
// fire the event
$events->dispatch(new MyEvent());
use Phoole\Di\Container;
// initiate the listener with dependencies injected
$listener = Container::create(MyListener::class);
// fire the event
Container::events()->dispatch(new MyEvent());
use Phoole\Event\EventCapableTrait;
use Phoole\Event\EventCapableInterface;
class MyEventCapable implements EventCapableInterface
{
use EventCapableTrait;
public function myMethod()
{
$this->triggerEvent(new MyEvent());
}
}
// global dispatcher & provider
$provider = new Provider();
$events = new Dispatcher($provider);
$eventCapable = new MyEventCapable();
$eventCapable->setDispatcher($dispatcher);
// will trigger an event
$eventCapable->myMethod();
// initiate object with dependencies injected
$eventCapable = Container::create(MyEventCapable::class);
// will trigger an event
$eventCapable->myMethod();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.