Отнесен към PHP - това е най-добрата книга за шаблони (и не само), които съм виждал PHP. Обектите, образци и техники за програмиране от Мат Zandstra.
Процедура за четене препоръчвам следното: FrimanFriman, тогава Мат Zandstra, а за десерт Фаулър P на ЕАА.
UPD:
Важно е да се прави разлика модела на зависимостта инжектиране Зависимост инжектиране контейнер.
Най-простият пример на зависимостта инжектиране:
Най-простият пример игнориране изричното изпълнение (за такъв код е трудно да пиша единица тестове, че е по-трудно да се разбере и редактиране):
Отличен (и лек) например DIC - тази пъпка:
Съветвам ви да прочетете и разберете изходния код, за да се уверите, че DIC (най-малко в продължение на PHP) няма магия. Първата версия е просто
100 реда. Трябва също да се отбележи, че класът на сесия използва зависимостта модел на инжектиране, ясно определяне на зависимостта си от SessionStorage. Контейнер прави единственият правилен сухожилие.
И да, самия контейнер може да се използва като локатор услуга, ако към него, например, е с глобален обхват. Но това е много лоша практика, защото ако нещо се обръща към функцията за намиране на услуга, а след това официално започва да зависи непосредствено върху всички компоненти на системата.
dllweb. DI - това е всъщност много прост. И очевидно вземат (ключовата дума е очевидно) се предава в съответствие с код, който изисква от тях. След параметрите на функция / метод или конструктора. А DIC - това е за това, как да се автоматизира този процес / универсализира услуги уеб приложение на ниво. Т.е. имате един куп услуги, като всеки дава точно определение, на какви други услуги зависи (чрез конструктор параметри). А DIC е в състояние да създаде копия на услугата, храненето им копие от услугите, от които зависят.