Внедрение конструктора - можно ли использовать новый нулевой объект, если он не указан в конструкторе?

Представьте, что у меня есть несколько классов, которые могут вести журнал, поэтому я создал регистратор интерфейс и несколько реализаций (запись в файл, в стандартный вывод, в базу данных и т. д.), но иногда я не забочусь о регистрации этих сообщений, поэтому я сделал реализацию, которая просто игнорирует все сообщения.

Теперь это помогает избежать if s и просто использовать $ this-> logger-> write ($ message) , но мне все равно придется каждый раз вводить фиктивный логгер.

Так не повредит ли такие вещи, как: $ this-> logger = $ logger? $ logger: new DummyLogger () в конструкторе.

Обычно я не работаю с конструктором, но такие вещи не кажутся слишком опасными.

Вы бы выбрали этот подход?

6
задан Charles 30 November 2011 в 18:49
поделиться