Является ли DI единственным решением для синглтонов и / или статических объектов?

Мне сказали, что синглтоны сложно тестировать.

Мне сказали, что статические методы / объекты тоже не годятся.

Итак, в основном единственное решение, кажется, инъекция зависимостей .

Но ... я действительно не могу привыкнуть к DI, возьмите этот пример:

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

С DI мой код превратился бы в:

global $logger; //> consider i have been instanciated it at the start of my fw

$query = new PreparedQuery($logger);
$query->prepare() etc.

Теперь это не так уж плохо. //sebastian-bergmann.de/archives/882-Testing-Code-That-Uses-Singletons.html

  • (static) http://sebastian-bergmann.de/archives/883-Stubbing-and- Mocking-Static-Methods.html
  • Довольно интересное чтение, если вы спросите меня.

    8
    задан dynamic 18 May 2011 в 23:17
    поделиться