De afhankelijkheid van de injectie, hè?

, de afhankelijkheid van de injectie, hè?,,,,,,,,,, 19, aandelen, 137,,,,,,, de delen van het netwerk, maandag wat in tuts + koers zal dalen tot slechts drie dollar.Niet' niet missen. En, waarschijnlijk, nadat je het leren van een beetje, je ontmoet de term "de afhankelijkheid van de injectie". Als je het nog leren relatief vroeg, je zou de vorming van een verwarde blik, dit deel overslaan.Maar dit is het schrijven van een belangrijk aspect (onderhoud en toepasbare) code.In dit artikel, ik zal het uitleggen van de eenvoudigste manier voor mijn vermogen, een voorbeeld, laten we naar een gemeenschappelijke code, en over de nadelen, de foto 's in verband met de VAR - BOB {/* * * * * * * * * * * * * * /database @ bescherming van $dB; /* * * * * * * de structuur.* * * * * * * /openbare functie __construct () {% dit > dB = dB:: getinstance ();}}, op het eerste gezicht lijkt onschuldig code.Maar gezien we hard code is, afhankelijk van: - database.Als we de invoering van een andere laag?Of wil je waarom dit doel is, foto 's, en externe bronnen te communiceren?Dit is niet in strijd met het concept van de scheiding?Het is natuurlijk.Dit doel moet niet over een en een die niet direct verband houden met de fundamentele gedachte is iets, je moet alleen verantwoordelijk voor één ding.Met dit idee, moet het niet verantwoordelijk voor de verbinding met de databank en de andere van de aard van de zaak, van mening dat het object op dezelfde manier, denk je dat je een huisdier.Honden in het park wandelen of spelen kan niet beslissen waar hij was toen hij ging.Je doet!Deze beschikking is niet op z 'n plaats.Laten we opnieuw de controle in de database, en in verband met de overdracht van in.Er zijn twee manieren om de fabrikant en zijn: setter injectie.Hier, in de voorbeelden: fabrikant, foto 's {/* * * * * * * * * * * * * * in verband met de database van de BOB @ var. De bescherming van een gegevensbank met $//* * * * * * *.De databank met db_conn Param BOB * * * * * * * * * * * * * * /openbare functie van $__construct ($dbconn) {% dit > dB = $dbconn;}} $foto 's = nieuwe foto' s ($dbconn); meer dan nodig, zullen we alle Afhankelijk van de constructeurs, als methode, en niet rechtstreeks in de harde code op het niveau van een injectie, foto 's, {/* * * * * * * de verbinding met de databank @ var - BOB * /bescherming van $dB; de functie van __construct () {} /* * * * * * * * * * * * * * de database met $dbconn Param BOB de verbinding met de databank.* * * * * * * /openbare functie setdb ($dbconn) {% dit > dB = $dbconn;}} $foto 's = nieuwe foto' s voor de foto 's. > setdb ($dbconn); deze eenvoudige wijzigingen niet langer afhankelijk zijn van een bepaald in verband Met de klas.Het externe systeem volledig onder controle wil houden, zoals het zou moeten zijn.Hoewel het misschien niet onmiddellijk zichtbaar zijn, de technologie is ook van de klas van de test is vrij gemakkelijk, want we kunnen nu simulatie van een databank, als je, setdb, methoden, of zelfs beter, als we later besloten gebruik te maken van verschillende vormen van persistente, als gevolg van de afhankelijkheid van de injectie, Een kleine zaak, "afhankelijk is. En in die vergadering om hun afhankelijkheid van door de fabrikant, of op het gebied van voor directe toegang." te maken, met gebruik van een, in zo een probleem: het is moeilijk om het werk in de klas.De gebruikers moeten nu volledig op de hoogte van de afhankelijkheid van klasse, en ze moeten nog geregeld, dus.Beschouw dit als de fictie, we moeten een paar meer afhankelijk zijn.Oké, de volgende is afhankelijk van de regels in de mode, wat we gaan doen: $= nieuwe foto 's van het licht; $> setdb ($dbconn); $licht > setconfig ($); $licht > setresponse (reactie), oh, de categorieën kunnen meer modulair; in de chaos, maar we hebben ook de hoop en de complexiteit.Voor de gebruiker gemakkelijk tot een nieuwe voorbeeld, foto 's, maar nu, hij moet zich voorzien van al deze afhankelijkheid.Wat een ellende.De oplossing van dit probleem, is het creëren van een container, zal de behandeling werkt op onze invloed.Als je er ooit een woord, "de inversie van de controle (IOC)," nu je weet wat het betekent, in de definitie van de software - engineering, controle: de omkering (IOC) is een gerichte programma 's in de praktijk in de werking van de koppeling is voorwerp van de vergadering tegen beperkingen, vaak niet weet. Bij de opstelling van het statisch.In deze klasse, zal onze afhankelijkheid van opslag van alle projecten van de griffie.Elke sleutel zal er een verband met betrekking tot de categorie van de concretisering van lambda - functie, zijn er verschillende manieren om dit op te lossen.We kunnen duidelijk, en de opslag, zoals: newphoto,, /ook vaak aangeduid als "CONTAINER" het Internationaal Olympisch Comité {/* * * * * * * * * * * * * * in verband met de database van de BOB @ var. De bescherming van $dB /; /* * * * * * * in het creëren van een nieuwe voorbeelden van foto 's en de vaststelling van de afhankelijkheid.(*) /de statische newphoto () {% = nieuwe foto 's voor de foto' s; foto 's > setdb (statische:: $dB); ///////- optische > setconfig (); ///////- optische > setresponse (); de foto' s terug;}} $foto 's van het Internationaal Olympisch Comité:: = newphoto () nu de foto' s van $;,,, zijn gelijk, foto 's, klasse, met alle vereiste afhankelijkheid.Zo niet, zal deze afhankelijkheid van de hand dat de gebruikers; hij gewoon bellen, newphoto, de methode, de tweede optie te creëren in plaats van elke categorie van de concretisering van een nieuwe methode, is het schrijven van een gemeenschappelijk register van containers, zoals:, het Internationaal Olympisch Comité {/* * * * * * * * * * * * * * in verband met de database van de BOB @ var /bescherming van de statische $register = - (* * * * * * *); toevoeging van nieuwe partners /op de griffie van de generator.* * * * * * * * * * * * * *) naam @ id Param object te creëren, gesloten voorbeeld * @ nietig * /openbare register (statische functie. Gesloten op de statische: de dollar, de griffie) {[naam]: dollar = dollar op te lossen; * * * * * * * * * * * * * *} /aanleg @ touw id * * * * * * * * * * * * * * /openbare @ terugkeer gemengde statische functie op te lossen ($) {als (statische: registratie ($)) {. = statische: [naam] register dollar naar $(); een uitzondering ('} de registratie van de naam, idioot. "); * * * * * * * * * * * * * *} /bepaling van de id geregistreerde naam id * @ @ snaren terug bool of id bestaan of niet * /openbare statische functie van registratie ($) {terug array_key_exists ($naIk, statische:: $register);}, laat deze code om je bang te maken, het is eigenlijk heel eenvoudig.Als de gebruiker, Olympisch Comité: methode van registratie, ze met een id, bijvoorbeeld, foto 's, en de betrokken partners, dit is slechts een voorbeeld van een klasse van lambda creëren en de nodige afhankelijk zijn, kunnen we nu door het Internationaal Olympisch Comité, de registratie, de oplossing van dit soort, afhankelijkheid, ///////de foto' s op de griffie van de toevoeging van% quot%% quot%), met een Olympisch Comité: register ('photo "functie () {% = nieuwe foto 's voor de foto' s; foto 's > setdb ("... "); $licht > setconfig ("... "); de foto' s terug;}) toegang krijgen tot de nieuwe foto 's; ///////voorbeelden van afhankelijkheid van het Internationaal Olympisch Comité: de dollar: foto' s = ('photo"); de oplossing, dus kunnen we constateren Dat, in deze toestand, we hebben geen handleiding geconcretiseerd.Integendeel, wij in het Internationaal Olympisch Comité, het Internationaal Olympisch Comité, het Internationaal Olympisch Comité, het Internationaal Olympisch Comité, het Internationaal Olympisch Comité, het Internationaal Olympisch Comité, het Internationaal Olympisch Comité, het Internationaal Olympisch Comité, het Internationaal Olympisch Comité, het Internationaal Olympisch Comité, het Internationaal Olympisch Comité, de internationale.Dit vermindert de complexiteit van onze voorstellen, als we de afhankelijkheid van de harde code van de categorie, in de dollar /foto 's = nieuwe foto' s van het Internationaal Olympisch Comité; foto 's /USD = na oplossing:: ('photo "); bijna een gelijk aantal tekens in de klas, maar, Nu, aanzienlijk flexibeler en kunnen testen.In de echte wereld, misschien wil je de uitbreiding van deze categorie kan creëren, enig kind. En knuffel magische manier, als we willen dat de vermindering van de lengte van de klas, het Internationaal Olympisch Comité. Verder kunnen we gebruik maken van de methode van de magische - dat wil zeggen, __set () (), en __get, het zou zijn als de gebruikers de methoden van de niet tot de klasse, van de klasse van het Internationaal Olympisch Comité (bescherming van de griffie. () = - dollar; de functie van __set (., $parser) {% dit > register [naam] = dollar. De openbare functie;} __get ($)) {terug. Dit register [naam > ($)];}}, door bevordering van Potencier Fabian, dit is een super minimale uitvoering - maar het zal werken.Of, __get (), of een (), die zal afhangen van de vraag of de gebruiker wordt een waarde of niet, fundamentele gebruik is: c =, nieuwe Olympisch Comité; en C > Mailer = (() {% m = nieuwe post; ////////nieuwe voorbeelden van de geloofwaardigheid van het creëren van een e - mail, enz. Terug naar de $m;}; ///////apport Mailer = dollar C > Mailer; ///////e - mail van voorbeelden, dank u voor te lezen.,



Previous:
Next Page: