Object-Oriented Programming în WordPress Structuri de control I

Pentru cei dintre voi care urmați împreună cu seria până acum, atunci știți că ne uităm la programarea orientată pe obiecte, în special din perspectiva unui începător.

Aceasta înseamnă că ne apropiem de subiect nu numai pentru cei care se uită la modul de a începe cu paradigma, dar căutăm toate diferitele caracteristici ale PHP care alcătuiesc limba și care sunt utilizate în cele din urmă în cadrul contextul programării orientate obiect.

În plus, facem toate acestea în contextul WordPress, astfel încât, până la sfârșitul seriei, putem vedea cum o aplicație practică a modului în care toate acestea pot fi utilizate într-un exemplu real al lumii.

Dacă aceasta este prima dată când citești un articol din serie, atunci îmi recomand să verificăm articolele anterioare deoarece fiecare articol din această serie se bazează pe cel precedent.

Până acum, am acoperit următoarele:

  1. O introducere
  2. Clase
  3. Tipuri

În acest articol, vom vorbi despre structurile de control.

Care sunt structurile de control??

"Structurile de control" este un termen termen de fantezie care descrie modul în care putem, hm, modul în care codul curge prin programul nostru se bazează pe un număr de factori.

De exemplu, să spunem că vrem să progresăm printr-un anumit set de instrucțiuni, dar doriți să faceți acest lucru ceva dacă este setată o variabilă sau este setat un alt set de instrucțiuni de altă variabilă.

Sau să presupunem că aveți un set de date pe care doriți să le introduceți prin citirea fiecărei valori, setarea fiecărei anumite valori sau chiar crearea anumitor valori.

Indiferent de situație, modul în care faceți acest lucru este prin utilizarea structurilor de control. În restul acestui articol, vom acoperi două tipuri de structuri de control: Condiții și bucle.

Deși condiționalitățile și buclele sunt tipurile de structuri de control pe care le vom revizui, există subseturi ale fiecăruia.

De exemplu, condiționalitățile au:

  • daca atunci declaraţii
  • comutator / caz declaraţii


Buclele, pe de altă parte, au și alte câteva variații:

  • pentru
  • pentru fiecare
  • do
  • in timp ce

Deși acestea sunt niște construcții noi pentru unii dintre voi, am acoperit deja elementele de bază ale articolelor anterioare, așa că avem tot ce avem nevoie pentru a merge mai departe.

Declarații condiționale

În opinia mea, afirmațiile condiționale sunt unele dintre cele mai ușor de înțeles, deoarece acestea citesc mai mult ca propoziții decât multe alte tipuri de declarații de programare. De exemplu, dacă spui literalmente "dacă această condiție este adevărată, atunci faceți această acțiune, altfel faceți această acțiune".

Sigur, este un a puțin mai complicat decât dacă aveți, să zicem, câteva alte condiții pe care trebuie să le verificați înainte de a decide asupra unei acțiuni, însă esența ei rămâne aceeași.

Deci, cu acest lucru a spus, să începem să aruncăm o privire la una dintre cele două variații de condiționalități oferite de PHP.

daca atunci declaraţii

După cum sa menționat anterior, cea mai elementară declarație condițională este de formă dacă / altceva, și veți vedea în general scris în felul următor:

Desigur, acest lucru nu explică cu adevărat modul în care funcționează structura de control, nu-i așa? Vreau să spun, Sigur, oferă un pic de schelet pentru a putea să vă uitați la el, dar lasă mai mult de dorit.

Și anume, ce este asta? condiție linia? În al doilea rând, care sunt cursurile de acțiune pe care structura de control le poate lua?

În primul rând, condiție se referă la orice afirmație care poate fi evaluată ca o expresie booleană. Are sens? Pur și simplu pune, condiție reprezintă orice declarație care poate fi evaluată ca Adevărat sau fals.

De exemplu, să spunem că avem două valori:

  1. $ is_active
  2. $ TOTAL_COUNT

Acestea sunt, evident, valori oarecum generice, dar să spunem că dacă $ is_active este setat la true, apoi vom crește $ TOTAL_COUNT de unul; altfel, vom scădea $ TOTAL_COUNT de unul. 

Acesta este modul în care ar putea arăta în cod:

În exemplul de mai sus, $ TOTAL_COUNT va fi mărită cu una pentru că $ is_active evaluează la adevărat.

Alternativ, să spunem $ is_active este setat sa fals.

În acest exemplu, $ TOTAL_COUNT va fi scăzut cu unul datorită faptului că $ is_active se evaluează la fals.

Acum, înainte de a ne uita la exemplul următor, este important să înțelegem că acestea sunt exemple extrem de triviale. Scopul acestor exemple nu este de a arăta modul de a lua operații complexe și de a le combina în construcțiile condiționate, ci cum să utilizare constructe condiționale.

Când ajungem la partea din seria care începe să scriem un plugin, atunci veți vedea cum putem folosi expresii mai elaborate într-o aplicație practică.

Cu acest lucru, să ne uităm la alte exemple de declarații if / then. În acest exemplu, vom arunca o privire la în cazul în care / elseif / altceva. Pentru a începe, să presupunem asta $ is_active este setat la true și $ TOTAL_COUNT este setat la 10.

= 10) $ total_count = $ total_count + 1 altceva $ total_count = $ total_count - 1; 

Codul de mai sus poate fi citit astfel:

  • Dacă $ is_active este setat la true, apoi setați $ TOTAL_COUNT catre unul. $ is_active nu este adevărat.
  • În caz contrar, dacă $ TOTAL_COUNT este mai mare sau egal cu 10, apoi incrementați $ TOTAL_COUNT de către 1. The $ TOTAL_COUNT este egal cu 10, deci vom crește $ TOTAL_COUNT la 11.
  • Dacă $ TOTAL_COUNT nu a fost mai mare sau egal cu 10, atunci am decrementat $ TOTAL_COUNT de unul.

Până la terminarea executării blocului de cod în exemplul de mai sus, $ TOTAL_COUNT va fi egal cu 11.

Are sens? 

Acesta este motivul pentru care numim aceste structuri de control: Aceste declarații (sau evaluări) ne permit să determinăm ce cod să funcționeze în funcție de anumite condiții.

Pentru cei care au programat o perioadă de timp, sunteți familiarizați cu expresii mai complexe folosind operatori, cum ar fi && și || si asa mai departe. În cele din urmă vom ajunge la acest lucru, dar nu în acest articol.

Tot ce spun, este un subiect pe care îl cunosc și pe care îl vom acoperi, dar nu astăzi.

Altceva?

Pentru cei care au mai multă experiență în programare, probabil că sunteți familiarizat cu operatorul ternar.

Nu vom lua o privire la acest lucru în această serie specială de articole, deoarece este în afara a ceea ce căutăm să acopere; cu toate acestea, dacă vă simțiți aventuros și căutați un mod mai concis pentru a scrie un simplu dacă / altceva declarații, apoi verificați operatorul ternar în manualul PHP.

comutator / caz declaraţii

Cu asta am spus că există un alt tip de condițional pe care trebuie să ne uităm înainte de a trece la următorul subiect.

Această construcție particulară se încadrează în continuare în declarații condiționate; cu toate acestea, aș susține că veți vedea că este folosit mai rar decât al lui dacă / altceva echivalent.

După cum indică titlul, aceasta se numește comutator / caz afirmație. Deși personal cred că limbajul o face mai puțin complicat de urmat, modul în care controlul curge prin evaluări nu este mult diferit de ceea ce am văzut deja.

Ca și noi dacă / altceva declarații, să aruncăm o privire mai întâi la modul în care comutator / caz este structurat și apoi vom arunca o privire la câteva exemple triviale.

Primul lucru pe care trebuie să-l observați despre acest tip particular de condiționalitate este că evaluarea are loc într-un singur loc: în partea de sus a blocului de cod chiar lângă intrerupator afirmație.

Aici, evaluarea se întâmplă o dată și apoi fiecare dintre cele ulterioare caz declarațiile sunt ceea ce dictează ce măsuri sunt luate. Este deasemenea o pauză declarație inclusă în fiecare dintre afirmațiile pe care le vom discuta și există, de asemenea, Mod implicit bloc de cod în partea de jos care vom discuta până la sfârșitul articolului, de asemenea.

Dar înainte de a face oricare dintre acestea, să stabilim un exemplu puțin mai practic despre ceea ce este de bază comutator / caz declarația arata ca.

Să presupunem că avem o valoare, $ FIRST_NAME, și apoi vrem să luăm o anumită acțiune pe baza primului nume al persoanei. În acest exemplu, vom stabili adresa de e-mail a unei persoane pe baza primului lor nume. Dacă nu recunoaștem numele persoanei, atunci vom seta valoarea egală cu nul.

Sigur, este un exemplu de contur, dar va demonstra punctul:

Să analizăm fluxul de control din exemplul de mai sus:

  • Definim a $ persons_name ca "Tom" și inițializăm $ EMAIL_ADDRESS ca un șir gol.
  • Apoi vom trece $ persons_name la comanda de comutare pentru evaluare.
  • Structura de control va evalua $ persons_name pentru fiecare valoare specificată în declarația cazului.
  • Din moment ce "Tom" este valoarea lui $ persons_name, apoi $ EMAIL_ADDRESS va fi setat la '[email protected]'

Dacă trebuia să trecem pe "David" ca fiind $ persons_name atunci $ EMAIL_ADDRESS ar fi setat la "[email protected]".

În continuare, dacă trebuia să trecem orice alt nume decât "Tom" sau "David", apoi $ EMAIL_ADDRESS ar fi setat la NUL. De asemenea, este important să rețineți acest lucru comutator / caz este sensibil la minuscule. Acest lucru înseamnă că, dacă ați trece "tom" în loc de "Tom", atunci acestea ar fi tratate ca cazuri diferite.

În cele din urmă, rețineți că fiecare caz se termină cu a pauză afirmație. Acest lucru este important pentru că pauză instruiește codul să iasă din comutator / caz și continuați să lucrați la codul următor.

Este extrem de important să înțelegeți că, dacă uitați o declarație de pauză, atunci va cădea imediat la Următor → declarație de caz care poate avea în mod evident rezultate neregulate (cum ar fi stabilirea greșită $ EMAIL_ADDRESS).

Un exemplu în care puteți folosi acest lucru în avantajul dvs. este astfel:

În exemplul de mai sus, am definit cazuri atât pentru "Tom", cât și pentru cazul în care este scris cu litere mici sau are prima literă cu majuscule și demonstrează modul în care codul va cădea în următoarea caz afirmație.

Dar există o modalitate chiar mai bună de a face acest lucru mai mult bulletproof:

Observați că aceasta are funcția PHP strtolower pentru a forța intrarea $ persons_name să fie complet inferior. Acest lucru ne permite să ne perfecționăm declarațiile de caz chiar mai mult.

Ce este în continuare?

În acest articol, am analizat primul dintre cele două grupuri de structuri de control care sunt disponibile în PHP. Nu, acestea nu fac parte în mod explicit din programarea orientată pe obiecte, dar înainte de a ajunge să vorbim despre mai multe aspecte fundamentale ale paradigmei, trebuie să înțelegem toate punctele mai fine care ne permit să scriem cod orientat pe obiecte.

În acest scop, vom continua această discuție cu privire la structurile de control din articolul următor, analizând buclele. 

După aceasta, vom fi gata să ne îndreptăm atenția spre funcții. Pentru cei care sunt familiarizați cu programarea procedurală, atunci funcțiile nu sunt nimic nou; cu toate acestea, dacă sunteți nou în programarea orientată obiect, atunci există un număr de factori care îi diferențiază de modul în care sunt folosiți în programarea procedurală.

Deci, aceasta este foaia de parcurs pentru următorul set de articole. Ca de obicei, feedback-ul este întotdeauna binevenit și aștept cu nerăbdare să continuăm discuția în următorul articol.

Cod