Я рассматриваю шаблон SplObserver как способ решения проблемы ведения журнала (а именно, как вы ведете ведение журнала активности, не реализуя его непосредственно в интересующих вас классах и, следовательно, помещая в них код, который не является прямымсвязанные с их зоной ответственности).
Проблема заключается в том, что при реализации SplObserver, похоже, не предоставляет какого-либо стандартизированного механизма для уведомляющего класса для отправки каких-либо подробностей в класс наблюдения, кроме «Я запускаю уведомление».
Мне было любопытно узнать, как другие люди решают эту проблему: расширяют ли они интерфейсы SplObserver и SplSubject или вместо этого используют свой собственный?
Я также думал, что в более общих терминах (как и в других функциональных возможностях, которые могут быть реализованы с помощью Observers, без необходимости регистрации), если можно было реализовать шаблон Observer, где наблюдатель может указать, что он хочет толькоуведомляется об определенных событиях, а не о каждом событии, которое может генерировать субъект.Например, мне может понадобиться наблюдатель регистрации, который записывает всю активность в файл журнала, а также наблюдатель отчетов об ошибках, который отправляет электронное письмо администратору при возникновении ошибки, но только при возникновении ошибки.Вы можете написать регистратор ошибок, чтобы игнорировать уведомления, которые не вызваны ошибкой (при условии, что можно изменить этот шаблон так, чтобы можно было отправлять определенные виды уведомлений), но я подозреваю, что это будет менее эффективно, чем идеально.Я подозреваю, что было бы лучше разрешить наблюдателям подписываться только на определенные тематические события, но можно ли реализовать этот подход с помощью SplObserver?