PHP code example of smoren / event-based-inheritance-model
1. Go to this page and download the library: Download smoren/event-based-inheritance-model 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/ */
smoren / event-based-inheritance-model example snippets
use Smoren\EventBasedInheritanceModel\EventBus;
use Smoren\EventBasedInheritanceModel\Listener;
// создаем шину
$bus = new EventBus([
// вводим событие onTest и назначаем на него обработчик
'onTest' => function(&$params, Listener $listener) {
$params['a']++;
echo "onTest (0): ".json_encode($params)."\n";
},
]);
// добавляем в стек обработчиков события onTest еще один обработчик
$bus->addListener('onTest', function(&$params, Listener $listener) {
$listener->handlePrevious($params); // в начале своего исполнения он запускает предыдущий
$params['a']++;
echo "onTest (1): ".json_encode($params)."\n";
});
// добавляем в стек обработчиков события onTest еще один обработчик
$bus->addListener('onTest', function(&$params, Listener $listener) {
$listener->handlePrevious($params); // в начале своего исполнения он запускает предыдущий
$params['a']++;
echo "onTest (2): ".json_encode($params)."\n";
return array_merge($params, ['b' => 0]);
});
// вводим событие onTest1 и назначаем на него обработчик
$bus->addListener('onMyTest', function(&$params, Listener $listener) {
// в начале своего исполнения он запускает предыдущий, но предыдущего нет, поэтому строка не имеет смысла
$listener->handlePrevious($params);
$params->a++;
echo "onMyTest (0): ".json_encode($params)."\n";
});
// добавляем в стек обработчиков события onTest1 еще один обработчик
$bus->addListener('onMyTest', function(&$params, Listener $listener) {
$listener->handlePrevious($params);
$params->a++;
echo "onMyTest (1): ".json_encode($params)."\n";
return $params;
});
// инициируем событие onTest
$params = ['a' => 1];
$result = $bus->trigger('onTest', $params);
print_r($result); // в результате получим то, что вернет верхний в стеке обработчик
/*
onTest (0): {"a":2}
onTest (1): {"a":3}
onTest (2): {"a":4}
Array
(
[a] => 4
[b] => 0
)
*/
echo "\n";
// инициируем событие onMyTest
$params = new \stdClass();
$params->a = 1;
$result = $bus->trigger('onMyTest', $params);
print_r($result); // в результате получим то, что вернет верхний в стеке обработчик
/*
onMyTest (0): {"a":2}
onMyTest (1): {"a":3}
stdClass Object
(
[a] => 3
)
*/
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.