yiisoft/event-dispatcher

Обсуждаем разработку фреймворка: дизайн компонентов, API, пакеты
Ответить
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

yiisoft/event-dispatcher

Сообщение samdark »

Диспетчер событий совместим с PSR-14. В качестве событий используются классы.

https://github.com/yiisoft/event-dispatcher

Как вам?
rmrevin
Сообщения: 92
Зарегистрирован: 2012.01.26, 18:55

Re: yiisoft/event-dispatcher

Сообщение rmrevin »

Александр, добрый день. Спасибо за работу над новым фреймворком. Постараемся внести посильный вклад. Первые мысли при взгляде на компонент ниже.

https://github.com/yiisoft/event-dispat ... er.php#L49
Возможно стоит посмотреть в сторону SplObjectStorage

https://github.com/yiisoft/event-dispat ... er.php#L75
Рефлексия в райнтайме это нормально? На сколько мне известно - рефлексия дорогая операция. Какая задача у этого метода?

https://github.com/yiisoft/event-dispat ... r.php#L114
Эти методы проверок возможно вынести в утилиты пакета, чтобы их можно было переиспользовтаь.

https://github.com/yiisoft/event-dispat ... r.php#L169
Можно добавить проверку на существование метода, раз проверяем существование класса.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: yiisoft/event-dispatcher

Сообщение samdark »

Возможно стоит посмотреть в сторону SplObjectStorage
С какой целью?
Рефлексия в райнтайме это нормально? На сколько мне известно - рефлексия дорогая операция. Какая задача у этого метода?
В этом случае она не очень дорогая. Задача у этого метода дать возможность делать так:

Код: Выделить всё

$provider->attach(function (AfterDocumentProcessed $event) {
    $document = $event->getDocument();
    // do something with document
});
Вместо:

Код: Выделить всё

$provider->attach(AfterDocumentProcessed::class, function (AfterDocumentProcessed $event) {
    $document = $event->getDocument();
    // do something with document
});
Эти методы проверок возможно вынести в утилиты пакета, чтобы их можно было переиспользовтаь.
Так их вроде негде переиспользовать. Плюс они очень мелкие и написать то же в другом пакете лучше, чем выделять новый пакет. Иначе leftpad какой-то получится...
Можно добавить проверку на существование метода, раз проверяем существование класса.
Сначала нужно сломать это через публичный API в тесте. Я пока не вижу как.
Ответить