en toepassing van het begrip polymorfisme van de kennis en het gebruik van PHP,,,,,,,,,, 22, 17 - eenheid,,,,,,,, de delen van het netwerk, maandag wat in tuts + koers zal dalen tot slechts drie dollar.Niet' niet missen.,, gerichte programma 's, polymorfisme is een sterke en een fundamenteel instrument.Het kan worden gebruikt voor de in de aanvraag voor het creëren van een meer organische stroom.Deze handleiding zal het algemene concept van diversiteit, en hoe het gemakkelijk kan worden ingezet in PHP.,,,,, polymorfisme van wat?Polymorfisme is een eenvoudig concept.Polymorfe beschrijft een model in de gerichte programma 's, de gerichte programma' s, in het delen van een gemeenschappelijke interface, heeft verschillende functies.De schoonheid is), en de verschillende categorieën van code hoeft niet te weten hoe het is met wat voor soort, omdat ze allemaal op dezelfde wijze wordt gebruikt.Iedereen weet hoe je met een knop. Je hoeft alleen te druk er op.Maar wat is een knop, afhankelijk van wat het is verbonden met de context en het wordt gebruikt, maar het resultaat is niet van invloed op hoe het wordt gebruikt.Als je baas zegt dat je moet door een knop in te drukken, heb je de taak van alle informatie die nodig is om de in de programma 's, polymorfisme wordt gebruikt om de toepassing van een modulaire en kan worden uitgebreid.In plaats van een verklaring van de voorwaarden voor de beschrijving van de actie van de verschillende kan worden vervangen, kan je een object dat je keuze gebaseerd op uw vraag.Dit is een van de fundamentele doelstellingen (,,, - interface, polymorfisme een onderdeel is van een gemeenschappelijke interface.Er zijn twee manieren om een interface: PHP, interfaces, abstracte categorie.Beide hebben hun gebruik in de hiërarchie van de klassen in je, je kan ze en ze samen in een interface, een dergelijke interface die vergelijkbaar zijn met die van een soort, maar het bevat niet de code.Voor de definitie van een interface kan de naam en de methode voor de bepaling van de parameters, maar niet de inhoud.De verwezenlijking van een soort interface, moet de definitie van alle voor de uitvoering van een interface.Een soort kan de uitvoering van meer dan één interface verklaring, het gebruik van "sleutelwoorden:,, interfaces voor myinterface (///////), en aan een soort gebruik, dat" het sleutelwoord (meerdere interfaces kan worden opgenomen door een komma):,, realiseerde ik me dat myinterface (///////- methode) als in, voor een soort interface omschreven, maar er is geen lichaam (een deel van de steun tussen de myinterface {-):,, openbare functie dothis (); de functie van dothat (); de functie van setName ($);}, alle omschreven methode, Hier zal opgenomen moeten worden in de beschrijving van een klasse van de uitvoering.Lees de volgende toelichting van de code),, ///////effectief wordt gerealiseerd. Myinterface {bescherming; de functie van dothis () {///////code van deze openbare functies dothat ()} {} openbare functies op ///////code naam ($) {% dit > naam =. ///////ongeldig;}} ter uitvoering van de verdwijning van myinterface {///////dothis ().Privé - functies () {///////dothat dit openbaar moeten zijn.Openbare functies () {} setname ///////vermiste naam parameters.Klasse, een abstracte categorie is een interface en een soort hybride.Het kan de definitie van functies en interfaces (in de vorm van een abstracte methode).- de uitbreiding van een abstracte, moet de tenuitvoerlegging van alle abstracte definitie van abstracte methode, abstracte verklaringen, ook de samenvatting, wachtwoord, toevoeging van abstract klasse voor myabstract (///////), en aan een soort "," sleutelwoorden: uitbreiding, uitbreiding, klasse /methoden myabstract {}, conventionele methoden als in gewone klassen in abstracte definitie van categorie, en geen abstracte methode gebruik ", abstract.).Het gedrag van de abstracte methode als in een interface omschreven methode, moet volledig worden uitgevoerd, door de uitbreiding van de definitie van de categorieën, de abstracte, myabstract {openbaar. Dothis (); de functie van deze openbare functies (///////dothat (}); de openbare functie van abstracte abstracte setName ($naam);},,, stap 1: de bepaling van de problemen, stel je voor dat je een genre, die verantwoordelijk is voor het beheer van de website van het artikel.Het bevat een artikel van de informatie, met inbegrip van de titel, auteur, de datum en de categorieën.Wat is dit, poly_base_article, klasse: {Titel, auteur van de dollar; de dollar; het publiek; de categorieën; de functie van __construct ($titel, auteur, de datum, de categorieën = 0 dollar) {% dit > titel = $titel; de dollar - > auteur = $auteur; de dollar - > datum = $datum; de dollar - > = $categorie}};,,, noot: in deze handleiding voor de aanleg van de package_component_class gebruik "." dat is alleen om te voorkomen dat de naam van een soort virtuele conflict, en nu in de gemeenschappelijke, Wil je nog een methode de produktie van de informatie in verschillende vormen, zoals de XML - en hola.Je kan de verleiding om te doen:,, poly_base_article (///////klasse...De voorbereiding van de functie (type) {% ret = "; - (-) - zaak" XML ": $ret =" < artikel > "; voor ret. =" < titel > ".$dst - > titel. "< /titel >; $ret. = "< auteur >".Doelst. - $> auteur. "< /auteur >; $ret. = "< datum >".Doelst. - $> de datum. "< /datum > "; voor ret. =" < > ".Doelst. - $> categorie. "< /indeling >; $ret. = "< /artikel >; schuld; zaak JSON:$array = - ('article" = > $DST); $ret = json_encode rekenen); breken;}}}, ga terug. Het is een lelijke oplossingen, maar het werkt... Nu.Zich afvragen wat er zal gebeuren in de toekomst, maar als we graag nog meer formulieren?Je kunt blijven bewerken van categorie, nog meer, maar nu ben je alleen maar verzwakken je klasse,,, gericht tegen een belangrijk beginsel is, een soort van een ding moeten doen, het zou zo goed moeten doen.En in dit geval, een voorwaardelijke verklaring moet een rode vlag tonen aan dat je klasse is te veel verschillende dingen te doen.Dit is de diversiteit in ons voorbeeld plaatsen, blijkbaar, heeft twee taken: het beheer van de artikelen en formaat van de gegevens.In deze handleiding zullen wij opnieuw onze formattering code naar een nieuwe set, hoe gemakkelijk het is het gebruik van polymorfisme.,,, stap 2: de definitie van je interface, het eerste wat we moeten doen is het bepalen van de interface.Is het belangrijk rekening te houden met de interface van je, want het moet veranderen in een wijziging van de code.In ons geval, gebruiken we een eenvoudige interface te definiëren we: een methode poly_writer_writer (openbare functies, interfaces, opgesteld (poly_base_article $DST);}, zo eenvoudig; de definitie van een openbare, schrijven (), artikelen doel als parameter voor de aanvaarding.De uitvoering van een klasse - zal zeker een schrijver van deze methode.,,, blijkt dat, als je wil beperken tot de parameters kunnen worden doorgegeven aan de functie en de aard van je methode, kan met behulp van het type dat we in het schrijven (), daarvan; het heeft de aard van het voorwerp, poly_base_article,.Helaas is dat niet het type, is in de huidige versie van het voor je, dus het is je zorg voor de terugkeer van de waarde van de door.,,, stap 3: het creëren van je dat je de definitie van interfaces, en het is tijd om de dingen te doen, eigenlijk.In ons geval, we hebben twee van onze wil de vorm van de output.Dus, we hebben twee schrijvers: xmlwriter en jsonwriter.Het is afkomstig van de door deze gegevens door het voorwerp en het formaat van informatie.,, hier is de xmlwriter lijkt:,, poly_writer_xmlwriter poly_writer_writer (openbare functie te schrijven (poly_base_article $DST) {% ret = "< artikel >"; voor ret. = "< titel >".$dst - > titel. "< /titel >; $ret. = "< auteur >".Doelst. - $> auteur. "< /auteur >; $ret. = "< datum >".Doelst. - $> de datum. "< /datum > "; voor ret. =" < > ".Doelst. - $> categorie. "< /indeling >; $ret. = "< /artikel >"; terug naar Ret;}}, zie je de verklaring van klasse, we gebruiken, uitvoering van het sleutelwoord dat interface.(), schrijven, met de specifieke functie van het XML - formaat.,, nu zijn we jsonwriter klasse, van de klasse van de verwezenlijking van poly_writer_writer {openbare functie, poly_writer_jsonwriter opgesteld (poly_base_article $DST) {% array - ('article "= > $DST); terug naar json_encode rekenen);}}, en al onze de code, met name in elke vorm van nu worden opgenomen in een afzonderlijke categorie.Elk van deze categorieën een specifieke vorm, geen andere verantwoordelijkheden.Uw aanvraag geen andere een deel moeten bekommeren over het gebruik van het, dankzij onze interface., stap 4: gebruik je te bereiken, en onze nieuwe definitie van de categorie, het is tijd om opnieuw onze artikelen.Alle codes, leven in een primitieve, schrijven (). De methode is opgesplitst in onze nieuwe collecties.Al onze methode. Wat we nu moeten doen is gebruik te maken van de nieuwe, voor deze categorieën, en poly_base_article (//...De openbare functie (poly_writer_writer schrijver dollar) {terugkeer van $schrijver > schrijven ($);}}, dat nu doen, is de methode die de klasse van een voorwerp (klasse van een interface, het noemen van de auteur), schrijven (), door middel van zelf (de dollar als argument,) en dan de waarden worden rechtstreeks aan de cliënt van de code.Het formaat van de gegevens niet langer zorgen te maken over de details, en die kunnen concentreren op haar belangrijkste taak, het verkrijgen van een schrijver, misschien wil je een schrijver waar je doel, want je moet door middel van een dergelijke methode.Dat hangt van jou af, er zijn veel strategieën.Bijvoorbeeld, je kan het gebruik van een fabriek die de gevraagde gegevens en het creëren van een object, klasse, poly_base_factory {openbare statische functie getwriter () {///////_request variabelen te verzoeken, $'format vorm []; ///////structuur van onze klas en controleer of het bestaan van de naam van de poly_writer_ = "dollar".De vorm van de dollarDe auteur; als (class_exists (klasse)) {///////de terugkeer van een nieuwe schrijver object weer een nieuwe klasse ()) ///////dollar, of we niet een uitzondering ('unsupported formaat ");}}, en, zoals ik al zei, zijn er nog veel andere strategie gebruik hangt af van uw eisen.In dit geval, op verzoek van de keuze van het formaat van de variabelen.Het verzoek om een soort van variabelen, de naam, de controles op de aanwezigheid van, en de terugkeer van een nieuw object.Als er geen naam, gooit een anomalie, laat de cliënt de code om uit te zoeken wat.,,, stap 5: het in elkaar zet, alles, hier is onze cliënt code zal dit alles samen, de nieuwe poly_base_article:, = dollar ('polymorphism "," Steve ", tijd () 0); proberen {% schrijver = poly_base_factory:: getwriter ();} vangst (abnormale e) {% schrijver = nieuwe poly_writer_xmlwriter ();} ECHO ten - > schrijven (samenwerking);,, eerst tot een voorbeeld van het voorwerp van een van de artikelen van de baan.Dan proberen we een schrijver van de fabriek, terug naar de standaard (xmlwriter) als een uitzondering.De laatste door de schrijver, we tegen onze artikelen schrijven (), een methode voor het drukken, de resultaten, de conclusie,,,, tijdens de les, ik zal je het met die diversiteit en PHP interface - specificaties.Ik hoop dat je weet dat ik alleen aan je laten zien, een potentiële toepassingen).Veel, veel meer aanvragen.Diversiteit is weg van je lelijke voorwaardelijke - code een elegante manier.Het beginsel van de vergadering is om je uit elkaar, en het is een onlosmakelijk onderdeel van de ontwerp -, veel.Als je vragen hebt, aarzel dan niet om het te vragen, in de toelichting.,
PHP
Previous:In het kader