Care sunt interfețele în PHP

În acest articol, voi încerca, pe scurt, pentru a explica în ce cazuri este necesar să se utilizeze interfețe în PHP, și să dea un exemplu de utilizare a acestora în practică.

Interfețe ar trebui să stabilească atunci când există o problemă generală, și mai multe opțiuni pentru soluțiile sale care sunt aplicate în funcție de situație. De exemplu, problema de păstrare a datelor, precum și soluții de backup de date:
  • în baza de date;
  • într-un fișier;
  • pentru fiecare sesiune, etc ..

În acest caz, este logic să creeze o interfață comună unică prin metode opționale, cum ar fi inserție () - stocarea directă a datelor. În funcție de locațiile de stocare a datelor, fiecare clasă va implementa stocarea de date, dar a numit această metodă va insera întotdeauna (), dacă o prescrie în interfață.
După ce creați interfața pe care doriți să creați mai multe clase de servicii de aplicare a acesteia (de punere în aplicare).


Pentru început, să ne uităm la un exemplu fără a utiliza interfața.

La crearea unei cereri în conformitate cu OEP, este necesar să se separe logica de rupere funcționale sarcini, în clase separate.
Să presupunem că există 3 clase:
- Data (clasa generală care primește datele și utilizează metodele clasei helper (servicii) pentru conservarea lor);
- saveDb (clasa stochează datele în baza de date);
- saveFile (magazine de clasă datele din fișier)
în acest exemplu, pentru stocarea datelor, data metoda (Clasa Data), ca argument, trebuie să treacă o instanță a unei anumite clase - saveDb sau saveFile.

Dezavantajul acestei abordări este că clasa verifica datele și datele de conservare clasa puternic legate. În exemplul, subliniem că argumentul până în prezent () - o instanta a clasei de lucru cu baza de date. Apoi, utilizați metodele necesare acestei clase (saveDb) cum ar fi insertInto ().
Și dacă aveți nevoie pentru a salva datele nu se află în baza de date, și un fișier. În acest caz, întreaga data metoda () va trebui să se schimbe, deoarece alte clase pot avea foarte diferite metode și nu insertInto () metoda și întregul principiu al celeilalte clase pot fi foarte diferite. Poate va furniza chiar și propria validare și metoda Validate () Data clasa sa ar fi de prisos.

Dar, în astfel de cazuri, și utilizate interfețe. Ele ajuta la crearea de template-uri pentru clasele care vor fi utilizate în cerere și au o metodă comună de a face aceeași sarcină, dar în felul său. Interfața vă permite să înțeleagă codul și ușor să-l mențină. Astfel, acestea contribuie la crearea de cuplare în vrac între clase, care poate fi ilustrată prin:


În exemplul meu simplificat arată că interfața obligă clase de punere în aplicare au metoda de inserție (). care (să zicem), direct implicat în insera date. Și, în afară de el, fiecare clasă poate avea alte necesare pentru metodele sale de lucru. Pentru clasa saveDb. Este, de exemplu, connectDb () metoda. crearea unei conexiuni bază de date. Pentru testare, am imprima un mesaj la metoda operație de inserare ().

Astfel, atunci când se lucrează cu date, constructorul clasei dorite sau prin altă metodă, putem trece serviciul de clasă, ceea ce indică faptul că se referă la o anumită interfață și să fie siguri că aceleași metode sunt folosite pentru toate clasele de acest grup. Pentru mai multe informații despre aceste metode (documentare), de altfel, pot fi specificate în mod direct în codul de lângă metodele de interfață relevante, cu atât mai multe, astfel încât nu va fi mult mai puține linii decât în ​​clasele de punere în aplicare.

În acest exemplu, în loc să depindă de clasa (saveDb) este transferată de la interfața dependență Save:

Codul Dată clasă nu depinde de un anumit implementator, dar numai pe interfața. Trebuie remarcat faptul că acest exemplu se bazează pe un model de „injectare Dependență“, care se traduce ca „injecție de dependență“.
Interfața se asigură că metodele specificate de aceasta în toate clasele pe care le pune în aplicare. Prin urmare, putem fi siguri că apelul se introduce metoda ():

duce la păstrarea datelor. În această locație de stocare depinde de punerea în aplicare a metodei în fiecare dintre aceste clase. Deci, metoda de inserție (clasa saveDb) mentine baza de date, se introduce () metoda saveFile salvează un fișier, și așa mai departe. Rulați codul în acest exemplu și a vedea că clasa Data a lucrat cu toate clasele Salvați interfață și, în același timp, clasa Data codului nu trebuie să se schimbe.

Ai nevoie de un site web? Doriți să oferim o cooperare? Contact - contact.

Bine ați venit pe punctul st 1 - în cazul în care pagina este reîncărcată, înseamnă pjax nu funcționează. Încercați actionSubscription schimbare efect astfel încât: actionSubscription funcția publică ()

Au căutat pe codul și nu a găsit în cazul în care este definit ca primul controlor de apel subsol, antet și apoi, pentru ce este clar pentru a adăuga script-uri pentru a conecta și vă stileymozhet.

Pentru afișarea corectă a elementului trebuie să instalați FlashPlayer și să activați Java Script în browser.

articole similare