În programarea orientată pe obiecte, polimorfismul este un instrument puternic și fundamental. Acesta poate fi folosit pentru a crea mai multe aplicații de structură organică. Această lecție descrie conceptul general de polimorfism și aplicarea acestuia la PHP.
Ce este polimorfism?
Polimorfismul - un cuvânt lung pentru un concept foarte simplu.
Polimorfismul descrie un model în programarea orientată obiect în care clase au funcționalitate diferită atunci când se utilizează o interfață comună.
Frumusetea polimorfismului este că puteți lucra în codul cu diferite clase, și nu are nevoie să știe ce fel de clasă este folosit, deoarece ele au aceeași interfață.
Analogia polimorfismului în lumea reală - butonul. Toată lumea știe cum să folosească un buton - trebuie doar să faceți clic pe ea. Dar ceea ce „face“ butonul de fapt, depinde de conexiunile și contextul utilizării acestora. Dacă cineva spune că trebuie să apăsați butonul, știm deja că trebuie să faceți pentru a rezolva problema.
În lumea de programare, polimorfismul este utilizat pentru a crea structuri modulare și simplificarea procedurilor de aplicare pentru extinderea funcțională. În loc să folosească o amestecătură de expresii condiționale care descriu diferitele opțiuni, puteți crea obiecte interschimbabile pentru a fi selectate în funcție de condițiile de utilizare. Aceasta este ceea ce este scopul principal al utilizării polimorfism.
interfețe
O parte integrantă a polimorfismului - o interfață comună. Există două moduri de a defini o interfață în PHP: interfețe și clase abstracte. Ambele metode au scopul lor, acestea pot fi utilizate împreună sau alege una care este cea mai potrivită pentru ierarhia de clasă.
Interfața identificată printr-o „interfață“ cuvinte cheie:
și se alătură clasei folosind „instrumente“ Cuvântul cheie (mai multe interfețe pot fi folosite specificându-le unul după altul, separate prin virgula):
Metodele pot fi determinate în interfața precum și o clasă, dar fără funcția corpului (porțiunea dintre acolade):
Toate metodele definite în interfața trebuie să fie puse în aplicare în clasa implementeaza interfata. Mai mult decât atât, metodele trebuie să fie publice și să îndeplinească exact definiția interfeței (a se vedea exemplul de mai jos)
O clasă abstractă
O clasă abstractă este o interfață, și un amestec de clasă obișnuită. Aceasta poate determina funcționalitatea precum și o interfață (sub forma unor metode abstracte). O clasă care se extinde o clasă abstractă trebuie să includă punerea în aplicare a tuturor metodelor abstracte definite în clasă abstractă.
O clasă abstractă este de asemenea definită ca o clasă normală, dar cu adăugarea cuvântului cheie „abstract“:
și este atașat la o clasă folosind cuvântul cheie „extinde“:
Metodele convenționale sunt definite în clasă abstractă, cât și în sala de clasă obișnuită, și metodele abstracte sunt definite folosind cuvântul cheie „abstract“. Metodele de abstractizare sunt, de asemenea, utilizate ca interfață și trebuie să fie puse în aplicare într-o clasă de expansiune.
Etapa 1: Descrierea problemei
Notă: Exemple de clase în acest tutorial va folosi convenția de denumire „paket_komponent_Klass“. Astfel, se va separa clase în spațiul de nume virtual pentru a evita coliziunea.
Acum trebuie să adăugați o metodă pentru a afișa informații în formate diferite, cum ar fi XML și JSON. Există o foarte mare tentația de a face acest lucru:
Dar această soluție este slabă, deși va lucra în prezent. Întrebați-vă ce se va întâmpla în viitor, atunci când nevoia de a adăuga orice format de ieșire? Vei edita clasa, adăugând tot mai multe expresii ale unui caz, și, astfel, la greutate cod de clasă.
Unul dintre principiile programării orientate obiect, afirmă că clasa trebuie să facă o singură operație, dar el trebuie să o facă foarte eficient.
Pasul 2: Determinați interfață
Primul pas este de a defini o interfață. Este important să se structura de interfață bine gândit-out, pentru că orice modificări aduse modificările codului de interfață pentru a solicita tuturor claselor în care vor fi utilizate. În exemplul nostru, vom folosi o interfață simplă pentru a defini o singură metodă:
Este foarte simplu. Am identificat scrie publice () metoda. care ia ca argument articolul obiect. Orice clasă care implementează interfața noastră ar trebui să aibă cu siguranță metoda de ieșire.
Sfat: Dacă doriți să limiteze tipul de argument pentru a fi trecut la funcțiile și metodele dvs., puteți utiliza o indicație clară a tipului de argument, așa cum se face în metoda write (). Este nevoie doar de obiecte de tip poly_base_Article. Din păcate, în mod explicit specificați tipul de întoarcere a versiunii curente a PHP nu poate, deci trebuie să fie foarte atent cu valoarea de returnare.
Pasul 3: Crearea unei implementări
După definirea interfeței pe care doriți să creați o clasă care va efectua aceste acțiuni. În exemplul nostru, avem două formate care sunt utilizate pentru a afișa conținutul articolului. Astfel, avem două clase: XMLWriter și JSONWriter. Ei extrage datele transmise de la informațiile de articol și formatul.
Codul Aici XMLWriter.
În definiția de clasă, utilizați uneltele de cuvinte cheie pentru punerea în aplicare a interfeței. write () metoda include un cod de conversie în XML.
Dar codul de clasă JSONWriter:
Toate codul corespunzător formatului specific este acum conținută în clasa lor individuale. Fiecare clasă este acum responsabil numai pentru procesarea dimensiunea și nimic altceva adecvat. Nici o altă parte a cererilor noastre nu sunt implicate în acest proces, prin utilizarea interfeței.
Pasul 4: Utilizarea punerii în aplicare nostru
Acum, cu definirea unor noi clase necesare pentru revizuirea clasa de articol. Toate codul care a fost plasat într-o scriere metoda originala (), acesta a fost pus în aplicare în noile săli de clasă. Toate metodele trebuie să utilizeze noile clase sunt acum:
Toate metodele sunt acum folosite de clasa Writer (orice clasă care implementează interfața Writer), prin apelul write (). cu acest $ se face referire la ea ca un argument, iar valoarea returnată este utilizat direct în codul. Nu mai este nevoie să vă faceți griji cu privire la formatarea datelor și vă puteți concentra pe sarcina principală.
Devine un scriitor obiect
Dar cum să obțineți obiectul Writer care va efectua această metodă? Totul depinde de tine, și există mai multe strategii diferite. De exemplu, puteți crea o fabrică de clasă pentru a intercepta datele de interogare și de a crea un obiect:
În acest exemplu, interogarea selectează un format variabil pentru utilizare. Proiectăm numele clasei, verifica existența și returnează un obiect nou scriitor. Și dacă numele construit nu există, o excepție este aruncată la codul de client se poate ocupa în mod corect situația.
Pasul 5: Comasarea
Codul care face legătura între funcționalitatea într-o singură unitate ar putea arata ceva de genul:
Mai întâi, creați un obiect articol. Apoi, vom încerca să obțineți obiectul Writer folosind Factory. În cazul în care o excepție este formatul implicit (XMLWriter). În concluzie, vom trece Writer scrie obiect () metoda de articolul obiectului nostru de ieșire rezultatul.
concluzie
Această lecție este o introducere și o descriere a polimorfismului interfețe în PHP. În exemplul unuia dintre modurile posibile a fost demonstrat utilizarea potențială a polimorfism. El este un mod elegant de a evita utilizarea expresiilor condiționale greoaie într-un cod orientat pe obiect. Polimorfismul ajută să urmeze principiul separării componentelor și este o parte integrantă a multor modele de programare.
Prin obținerea de informații de la două canale (vedere si auz) eficacitatea instruirii de învățare departe superioare de cărți. O temele pentru acasă și teste on-line vă va permite să se gândească în mod constant în limba țintă și imediat verifica cunoștințele!
Dacă doriți o lungă perioadă de timp pentru a studia modul în HTML, mi-ai, pentru ai vesti bune!
Dacă ați învățat deja HTML și doresc să avanseze, următorul pas va fi de a studia tehnologia CSS.
Dacă doriți să înțeleagă conceptele de domeniu si hosting, învață cum să creeze o bază de date, încărca fișiere pe un site web prin intermediul unui server FTP, crea subdomenii, configurați cutiile poștale pentru site-ul și să monitorizeze participarea, acest curs este conceput special pentru tine!