PHP code example of superbalist / php-event-pubsub
1. Go to this page and download the library: Download superbalist/php-event-pubsub 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/ */
superbalist / php-event-pubsub example snippets
// create a new event manager
$adapter = new \Superbalist\PubSub\Adapters\LocalPubSubAdapter();
$translator = new \Superbalist\EventPubSub\Translators\SimpleEventMessageTranslator();
$manager = new \Superbalist\EventPubSub\EventManager($adapter, $translator);
// dispatch an event
$event = new \Superbalist\EventPubSub\Events\SimpleEvent(
'user.created',
[
'user' => [
'id' => 1456,
'first_name' => 'Joe',
'last_name' => 'Soap',
'email' => '[email protected]',
],
]
);
$manager->dispatch('events', $event);
// dispatch multiple events
$events = [
new \Superbalist\EventPubSub\Events\SimpleEvent(
'user.created',
[
'user' => [
// ...
],
]
),
new \Superbalist\EventPubSub\Events\SimpleEvent(
'user.created',
[
'user' => [
// ...
],
]
),
];
$manager->dispatchBatch('events', $events);
// listen for an event
$manager->listen('events', 'user.created', function (\Superbalist\EventPubSub\EventInterface $event) {
var_dump($event->getName());
var_dump($event->getAttribute('user'));
});
// listen for all events on the channel
$manager->listen('events', '*', function (\Superbalist\EventPubSub\EventInterface $event) {
var_dump($event->getName());
});
// create a new event manager
$adapter = new \Superbalist\PubSub\Adapters\LocalPubSubAdapter();
$translator = new \Superbalist\EventPubSub\Translators\TopicEventMessageTranslator();
$manager = new \Superbalist\EventPubSub\EventManager($adapter, $translator);
// dispatch an event
$event = new \Superbalist\EventPubSub\Events\TopicEvent(
'user',
'created',
'1.0',
[
'user' => [
'id' => 1456,
'first_name' => 'Joe',
'last_name' => 'Soap',
'email' => '[email protected]',
],
]
);
$manager->dispatch('events', $event);
// listen for an event on a topic
$manager->listen('events', 'user/created', function (\Superbalist\EventPubSub\EventInterface $event) {
// ...
});
// listen for an event on a topic matching the given version
$manager->listen('events', 'user/created/1.0', function (\Superbalist\EventPubSub\EventInterface $event) {
// ...
});
// listen for all events on a topic
$manager->listen('events', 'user/*', function (\Superbalist\EventPubSub\EventInterface $event) {
// ...
});
// listen for all events on the channel
$manager->listen('events', '*', function (\Superbalist\EventPubSub\EventInterface $event) {
// ...
});
// create a new event manager
$adapter = new \Superbalist\PubSub\Adapters\LocalPubSubAdapter();
$translator = new \Superbalist\EventPubSub\Translators\SchemaEventMessageTranslator();
$schemas = [
'events/user/created/1.0.json' => json_encode([
'$schema' => 'http://json-schema.org/draft-04/schema#',
'title' => 'My Schema',
'type' => 'object',
'properties' => [
'schema' => [
'type' => 'string',
],
'user' => [
'type' => 'object',
],
],
' 'user' => [
'id' => 1456,
'first_name' => 'Joe',
'last_name' => 'Soap',
'email' => '[email protected]',
],
]
);
$manager->dispatch('events', $event);
// the listen expressions are the same as those used for TopicEvents.
/**
* Return the event name.
*
* @return string
*/
public function getName();
/**
* Return all event attributes.
*
* @return array
*/
public function getAttributes();
/**
* Return an event attribute.
*
* @param string $name
* @return mixed
*/
public function getAttribute($name);
/**
* Set an event attribute.
*
* @param string|array $name
* @param mixed $value
*/
public function setAttribute($name, $value = null);
/**
* Check whether or not an event has an attribute.
*
* @param string $name
* @return bool
*/
public function hasAttribute($name);
/**
* Check whether or not the event matches the given expression.
*
* @param string $expr
* @return bool
*/
public function matches($expr);
/**
* Return the event in a message format ready for publishing.
*
* @return mixed
*/
public function toMessage();
/**
* @param mixed $message
* @return null|EventInterface
*/
public function translate($message);
/**
* @param EventInterface $event
* @return ValidationResult
*/
public function validate(EventInterface $event);
/**
* @return string
*/
public function getAttributeKey();
/**
* @return mixed
*/
public function getAttributeValue();
use Superbalist\EventPubSub\AttributeInjectorInterface;
class UserAttributeInjector implements AttributeInjectorInterface
{
/**
* @return string
*/
public function getAttributeKey()
{
return "user";
}
/**
* @return mixed
*/
public function getAttributeValue()
{
return [
'id' => 2416334,
'email' => '[email protected]',
'first_name' => 'John',
'last_name' => 'Doe',
];
}
}
// create a new event manager
$adapter = new \Superbalist\PubSub\Adapters\LocalPubSubAdapter();
$translator = new \Superbalist\EventPubSub\Translators\SimpleEventMessageTranslator();
$manager = new \Superbalist\EventPubSub\EventManager($adapter, $translator);
$manager->addAttributeInjector(new UserAttributeInjector());
// or
$manager = new \Superbalist\EventPubSub\EventManager($adapter, $translator, null, [new UserAttributeInjector()]);
// create a new event manager
$adapter = new \Superbalist\PubSub\Adapters\LocalPubSubAdapter();
$translator = new \Superbalist\EventPubSub\Translators\SimpleEventMessageTranslator();
$manager = new \Superbalist\EventPubSub\EventManager($adapter, $translator);
$manager->addAttributeInjector(function () {
return [
'key' => 'user',
'value' => [
'id' => 2416334,
'email' => '[email protected]',
'first_name' => 'John',
'last_name' => 'Doe',
],
];
});
// create a new event manager
$adapter = new \Superbalist\PubSub\Adapters\LocalPubSubAdapter();
$translator = new \Superbalist\EventPubSub\Translators\SimpleEventMessageTranslator();
$manager = new \Superbalist\EventPubSub\EventManager($adapter, $translator);
// hook into translation failures
$manager->setTranslateFailHandler(function ($message) {
// the message failed to translate into an event
});
// hook into listen expression failures
$manager->setListenExprFailHandler(function (\Superbalist\EventPubSub\EventInterface $event, $expr) {
// the event didn't match the listen expression
// this isn't really an error, but can be useful for debug
});
// hook into validation failures
$manager->setValidationFailHandler(function (\Superbalist\EventPubSub\ValidationResult $result) {
// the event failed validation
var_dump($result->errors());
});