Почему Yii:$app это плохо?

С точки зрения ООП

в симфони такого не встретишь.
  • Вопрос задан
  • 517 просмотров
Решения вопроса 2
OnYourLips
@OnYourLips
Это антипаттерн Service Locator.
Скрытие зависимостей, жёсткая зависимость от этого SL, нарушение инкапсуляции, мешает работать со средствами статического анализа.

в симфони такого не встретишь.
Надо понимать, что у этих фреймворков разные цели и задачи. Yii лучше сравнивать с Laravel, и в ларавеле подобного достаточно ("фасады").
Ответ написан
@developer007
Глобальные переменные в большинстве случаев нарушают инкапсуляцию. К ним открыт неконтролируемый доступ отовсюду.

В большом проекте при обилии глобальных переменных возникает путаница в именах. Глобальную переменную же видно отовсюду, надо, чтобы отовсюду было понятно, зачем она.

Глобальные переменные в большинстве случаев нарушают принцип инверсии зависимостей (или делают возможным его нарушение).

Глобальные переменные ухудшают масштабируемость проекта.

Глобальные переменные ухудшают читаемость кода (в каком-то конкретно взятом месте непонятно, нужна ли какая-то конкретная глобальная переменная, или нет).

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

Глобальные переменные создают большие сложности при использовании модульного тестирования.
Глобальные переменные увеличивают число прямых и косвенных связей в системе, делая её поведение труднопредсказуемым, а её саму - сложной для понимания и развития.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
proudmore
@proudmore
Очевидно, тем, что его можно использовать в любом контексте, как глобальную переменную.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы