Хуткі старт Symfony DI (Dependency Injection) Падручнік
Што такое Dependency Injection (DI)?
Залежнасць ін'екцыі тэхніка, якая дазваляе свабодна звязаных аб'ектаў у рамках праграмнага забеспячэння. Наогул, калі аб'ект патрабуе доступу да функцыянальнасці іншага ён будзе створаны ўнутрана вядучых жорстка звязаных сістэм. Ажыццяўляючы ўкараненне залежнасці мы ўводзім неабходныя аб'екты гатовыя да выкарыстання (часам таксама завецца інверсіяй кіравання - МАК). Разгледзім наступны прыклад:
<? PHP твар, якое прымае рашэння класа { грамадскіх makeDecision функцыі (масіў $ параметраў) { / / Неабходна адаптара БД $ Ар = новы DecisionParameters (); $ ParameterScore = $ DP-> getScore ($ параметраў); / * ... Яшчэ некалькі рашэнняў логіка ... * / вяртання ($ parameterScore> 50); } }
Гэты фрагмент кода, як кажуць, цесна звязаны з аб'ектам DecisionParameters. Перапісванне вышэй у слабосвязанных мода нам давядзецца нешта накшталт ....
<? PHP твар, якое прымае рашэння класа { прыватныя $ _dp; публічную функцыю __ construct ($ інш) { $ Гэта-> _dp = $ інш; } грамадскіх makeDecision функцыі (масіў $ параметраў) { $ ParameterScore = $ гэта-> _dp-> getScore ($ параметраў); / * ... Яшчэ некалькі рашэнняў логіка ... * / вяртання ($ parameterScore> 50); } }
У той час як атрыманне пераваг слабосвязанных код, які мы дадаем складанасць такі, што кожны раз, калі ствараецца асобнік аб'екта мы таксама павінны асобнік сваёй залежнасці і перадаць іх у занадта. Напрыклад, гэта:
$ = Выбар новых твар, якое прымае рашэння (); echo $ выбар-> makeDecision (масіў ('высілак' => 'нізкі', 'вяртанне' => 'высокі'));
зараз выглядае так:
$ Ар = новы DecisionParameters (); $ = Выбар новых твар, якое прымае рашэння ($ інш); echo $ выбар-> makeDecision (масіў ('высілак' => 'нізкі', 'вяртанне' => 'высокі'));
Гэтая сітуацыя становіцца ўсё больш хваравітым, як лік залежнасцяў для класа павялічваецца, і што, калі залежнасць саміх залежнасцяў? Гэта можа даволі хутка стаць аб'ектам кашмар адміністрацыі! Калі ласка, увядзіце залежнасць ін'екцый кантэйнераў (або структуры) ...
Працягнуць чытанне "Хуткі старт Symfony DI (Dependency Injection) Падручнік" »

















































