@remyfox

Как задать свойства нескольким объектам разных классов через 1 метод?

Есть у меня несколько объектов, которым нужно устанавливать язык отображения при получении его из бд. Как реализовать, что 1 объект устанавливал сразу всем нужным объектам язык ыыы)

Поставил сложность только из-за того, что не могу сформулировать нормально вопрос
  • Вопрос задан
  • 241 просмотр
Пригласить эксперта
Ответы на вопрос 2
php666
@php666
PHP-макака
Пусть объекты, требующие языка, сами лезут за языком (реализовать в виде трейта).
Ответ написан
Комментировать
@kolya7k
Тут принципиально важно сначала определиться с двумя вещами:
1) Известны ли все экземпляры классов, которым нужно сообщать о смене языка или их много и они создаются из самых разных мест?
2) Как часто меняется язык, насколько велика сложность его «узнавания» и как работают с языком те классы.

Соотвественно, как варианты, которыми можно решить задачу:
1) Трейты (как вариант множественного наследованиях), на мой взгляд неочевидно и сложно, не переносимо.
2) Наследование от класса Localized, если можно логично встроить в цепочку наследования и код установки языка для каждого класса-наследника похожий.
3) Интерфейсы, если наследование невозможно ИЛИ код/логика установки языка отличается для разных классов.
4) Callback-функции, каждый класс, которому нужна информация о смене языка может в конструкторе регистрировать Callback в менеджере языков, а в деструкторе - удалять.
5) Обновление статической переменной в классе-менеджере языков и просто использование её в классах, которым нужен язык.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы