Продолжая улучшать наш пример, я бы не остановился на создании одного класса. Обычно в современных веб-приложениях происходит много различных событий, и в них передаются разные аргументы, их можно сгруппировать, и для каждой группы событий создать свой — подходящий класс аргументов.
Вот в этом абзаце я об этом и пытался сказать, видимо не очень понятно получилось.
Т.е. предполагается что есть события в которых нужен $id, а есть события в которых нужен, скажем, какой ни будь $templateKey.
Эти события можно определить в две группы, скажем DocumentEvents и TemplateEvents, и создать для них два класса аргументов наследующихся от базового EventsArguments.
Соответственно в функциях-хендлерах в тайп хинтинге мы указываем эти классы, и соответсвенно при работе с ними у нас не возникает вопросов, что там приходит в параметрах.
Вот в этом абзаце я об этом и пытался сказать, видимо не очень понятно получилось.
Т.е. предполагается что есть события в которых нужен $id, а есть события в которых нужен, скажем, какой ни будь $templateKey.
Эти события можно определить в две группы, скажем DocumentEvents и TemplateEvents, и создать для них два класса аргументов наследующихся от базового EventsArguments.
Соответственно в функциях-хендлерах в тайп хинтинге мы указываем эти классы, и соответсвенно при работе с ними у нас не возникает вопросов, что там приходит в параметрах.