Rudra FrameworkRudra Framework

Добавление наблюдателя (Observer):

php rudra create:observer

Краткий вариант:

php rudra cr:ob
Enter observer name: test
Enter container: web

Результат:

<?php

namespace App\Containers\Web\Observers;

use Rudra\EventDispatcher\ObserverInterface;

class TestObserver implements ObserverInterface
{
    public function onEvent()
    {

    }
}

Добавление наблюдателя (Observer):

use App\Containers\Web\Observers\TestObserver;
Dispatcher::attachObserver( 'event', [TestObserver::class, 'onEvent']);

Для добавления глобально рекомендуется добавить вышеуказанное в метод eventRegistration в ShipController  находящийся в app\Ship\ShipController.php:

public function eventRegistration()
{
	Dispatcher::attachObserver( 'event', [TestObserver::class, 'onEvent']);
}

Отключение  наблюдателя (Observer):

Dispatcher::detachObserver( 'event', TestObserver::class);

Инициация события (event):

Dispatcher::notify('event');

С передачей параметров:

<?php

namespace App\Containers\Web\Observers;

use Rudra\EventDispatcher\ObserverInterface;

class TestObserver implements ObserverInterface
{
    public function onEvent(string $message)
    {
        dump($message);
    }
}

При добавлении:

Dispatcher::attachObserver( 'event', [TestObserver::class, 'onEvent'], 'Hello World!!!');

При инициации события:

Dispatcher::notify('event', 'Hello World!!!');

Просмотр всех имеющихся наблюдателей (observers):

php rudra observers