Hvis du har sporet med oss gjennom denne serien, vet du sikkert at vi ser på begrepene objektorientert programmering fra nybegynnerperspektivet.
Spesielt ser vi på emnet for de som ønsker å gjøre seg kjent med paradigmet, men også med hvordan man bruker begreper innenfor WordPress-sammenheng; men før vi kommer inn i arbeid med objektorientert programmering og WordPress, må vi legge grunnlaget ved hjelp av de grunnleggende funksjonene som PHP gir.
Til slutt jobber vi for å skape et praktisk eksempel på objektorientert programmering ved å lage et WordPress-plugin. Men før vi gjør det, er det noen flere ting vi må diskutere.
Hvis dette er første gang du leser denne serien, anbefaler jeg at du sjekker ut de forrige artiklene, da hver artikkel i denne serien bygger på den før den. Hvis du derimot er noen som er mer kjent med objektorientert programmering, så vil du kanskje gå tilbake til serien når vi kommer inn i den praktiske anvendelsen av ideene.
Inntil dette punktet har vi dekket følgende emner.
I denne artikkelen skal vi pakke opp vår diskusjon om kontrollstrukturer ved å se på de ulike typer løkker som PHP gir.
Hvis du har lest den forrige artikkelen, husker du at "kontrollstrukturer" refererer til konstruksjoner som tilbys av språket (i vårt tilfelle PHP) som tillater oss å endre hvordan kode gjennom hele programmet basert på en rekke forhold.
I den siste artikkelen så vi på hvordan vi kan gjøre dette ved bruk av betingede setninger som er uttalelser som vil tvinge programmet ned en utførelsesvei basert på en betinget (for eksempel hvis en variabel er satt, hvis en tilstand er sant , og så videre).
Men det er ikke den eneste typen kontroll vi har. I tillegg til conditionals, har vi muligheten til å iterere (eller loop) gjennom sett med data slik at vi kan handle på hvert element i et sett med data. Vi kan legge til data, fjerne data, vise data, sortere dataene, og mye mer.
La oss for eksempel anta at vi har et sett med data, kanskje et sett med 10 innlegg, og at vi vil gå gjennom og skrive ut tittelen og datoen for hvert innlegg. Loops lar oss gjøre dette.
Uansett hva det er som du ønsker å gjøre, er det fire typer løkker som PHP gir som tillater oss å løse gjennom datasett. I denne artikkelen skal vi se eksempler på hver, så vel som noen nyanser av hver, slik at vi har enda et sett med kontrollstrukturer som vi kan bruke når tiden kommer til å begynne å skrive objektorientert kode.
til
LoopsDe til
sløyfe anses ofte for å være den mest kompliserte av løkkene på grunn av hvordan du skriver koden. Strømmen av det leser litt unaturlig.
Vanligvis er vi vant til å skrive kode linje for linje slik at hver instruksjon er satt på en enkelt linje; imidlertid med til
sløyfer, vi har en litt annen tilnærming. Først vil jeg dele et grunnleggende eksempel, vi vil dekke aspektene av det, og så ser vi på en mer detaljert tilnærming.
Her er et grunnleggende eksempel som teller til 10 og vil vise hvert nummer på skjermen slik det gjør:
for ($ i = 0; $ i < 10; $i++ ) echo $i;
I første linje av sløyfe (innenfor parentes etter til
uttalelse), gjør vi følgende:
$ i
og sette den lik null$ i < 10
$ i
av verdien av 1 (ved bruk av post-increment operatøren) etter hver iterasjonI sløyfens kropp bruker vi bare PHP ekko
funksjon for å skrive ut gjeldende verdi av $ i
. Ettersom sløyfen behandler instruksjonene, ser vi 0-9 ut på skjermen (siden vi starter null og kjører mens $ i
er mindre enn 10).
Forskjellige mennesker har forskjellige teknikker for hvordan de leser kode, så strategien som jeg kommer til å anbefale, kan ikke være best for deg, men når jeg leser disse sløyfer, leser jeg vanligvis dem slik:
Med $ jeg starter ved null, og mens $ i er mindre enn 10, kjører du kroppens løkke og øker deretter $ i med 1.
Fangsten er det $ i
kan starte med noe verdi, kan telle opp til et vilkårlig beløp, og kan økes med en hvilken som helst verdi.
Jo mer arbeid vi gjør med til
sløyfer, jo mer sannsynlig kommer du til å fange noen ting som kan optimalisere ytelsen. For nå har imidlertid grunnleggende om forløp blitt dekket og de avanserte teknikkene ligger litt utenfor omfanget av denne spesielle artikkelen.
for hver
Loopsfor hver
sløyfer ligner på løkker som de itererer gjennom et datasett, men de gjør det i rekkefølge. Dette betyr at det ikke er en enkel måte å gjenta gjennom hver, si to elementer i en liste (som du kan med, si, $ i + 2
i til
sløyfer).
Denne typen loop er uten tvil den mest lesbare. For eksempel, la oss anta at vi har en matrise, og mengden data inneholder følgende navn: Alpha, Bravo, Charlie, Delta, Echo og Foxtrot. Navnet på arrayet er lagret i en variabel som heter $ navn
.
I dette tilfellet kan vi sette opp en for hver
loop for å iterere gjennom navnene og vise hver av dem på skjermen slik:
$ names = array ('Alpha', 'Bravo', 'Charlie', 'Delta', 'Echo', 'Foxtrot'); foreach ($ navn som $ navn) echo $ name;
Ganske enkelt å sette opp, er det ikke?
Akkurat som vi delte en måte å lese den første til
loop i forrige seksjon, kan du lese for hver
sløyfe på følgende måte:
For hvert navn i samlingen av navn, vis det på skjermen.
Eller kanskje mer generelt:
For hvert element i samlingen, vis det på skjermen.
Det er et annet aspekt til for hver
sløyfe som vi kan dekke mer detaljert senere i serien, men hovedideen er at hvis du er kjent med assosiativ array, det vil si arrayer som er indeksert med en nøkkel og som har en tilknyttet verdi, kan du sette opp en for hver
loop for å hente hver nøkkel og verdi for hver iterasjon av løkken.
For eksempel, la oss si at vi har følgende assosiative array:
$ helter = array ('alien' => 'Superman', 'human' => 'Batman');
Når du bruker en tilknyttet array som dette, kan du også sette opp en for hver
sløyfe slik:
foreach ($ heroes as $ type => $ navn) echo $ name. ' er en ' . $ Type;
Dette vil resultere i at resultatet leser noe som "Superman er en fremmed" fordi "Superman" er verdien og "fremmed" er hans type (eller hans nøkkel).
Den mer generiske formen for denne sløyfen er som følger:
foreach ($ samling som $ key => verdi) // Arbeid går her
Ingenting veldig komplisert.
samtidig som
LoopsMed varianter av til
løkker dekket, det er på tide å gjøre oppmerksomheten til samtidig som
løkker som det er to variasjoner (selv om de kalles noe annet: samtidig som
sløyfer og gjøre
sløyfer), men de adskiller seg bare på en mindre måte.
Men før vi ser på hvordan de skiller seg, la oss ta en titt på samtidig som
sløyfe, dets grunnleggende format, hvordan du bruker det, og hvordan det sammenlignes med det forrige til
løkker.
Først, det grunnleggende formatet av a samtidig som
sløyfen er som følger:
mens (tilstand) // gjør arbeid
Legg merke til at denne sløyfen er forskjellig fra vår tidligere sløyfe ved at den aksepterer en betinget del av den opprinnelige utsagnet (derfor årsaken til at vi dekket conditionals i vår siste artikkel).
Sløyfen virker ved først å sjekke for å se om tilstanden er sant, å utføre kodeblokken i looplegemet, og deretter sjekke tilstanden igjen. Dette betyr at samtidig som
sløyfer kan gjøre noen arbeidsenhet så lenge den angitte tilstanden vurderes til ekte.
Så, sikkert, du kan gjenta gjennom en liste med tall, løp gjennom en samling av data, men du kan også gjøre visse ting mens en boolsk verdi fortsatt er sant. Og når flagget når falskt, vil mens sløyfen avslutte.
La oss se på et eksempel der vi popper elementer ut av en matrise. La oss anta at den opprinnelige gruppen har 100 elementer, og at vi vil gjøre dette til arrayet har 50 elementer igjen:
mens (50! == tall ($ elementer)) array_pop ($ elementer);
Her vil tilstanden fortsette å evaluere til ekte til tallet på elementene i $ elementer
array har blitt redusert til 50 elementer.
Som vi har gjort med tidligere løkker, er dette en måte at du kan lese en samtidig som
løkke:
Selv om denne tilstanden er sant, utfør følgende kode.
Selvfølgelig, det er så om det ser ut i kode uansett, er det ikke?
gjøre
LoopsEndelig, gjøre
sløyfer er nesten nøyaktig som samtidig som
løkker bortsett fra at det vil deterere minst én gang før du sjekker tilstanden.
Før du tar en titt på et eksempel, her er den grunnleggende strukturen til gjøre
løkke:
gjør // gjør arbeid mens (tilstand);
Relativt klart, rett?
Så la oss sette opp et veldig grunnleggende eksempel som har oss å lage en matrise og fylle den med bare like tall. For å gjøre dette trenger vi:
Med det sagt kan man sette opp koden for å se slik ut:
$ i = 1; $ even_numbers = array (); gjør hvis (0 === ($ i% 2)) $ even_numbers [] = $ i; $ i ++; mens ($ i <= 100 );
Og til slutt, som med resten av løkkene, kan du lese disse sløyfer på følgende måte:
Gjør følgende arbeidsboks, og kontroller for å se om følgende betingelse er sant. Hvis ja, fortsett å gjøre arbeidet.
Når det gjelder gjøre
looper, hvis du jobber med en samling, vil du være sikker på at samlingen er ikke tom før du jobber på den fordi den vil utføre koden i blokk av sløyfen før du sjekker for å se om tilstanden er sant. Dette kan føre til feil hvis du prøver å jobbe på et datasett som er tomt.
Selvfølgelig, hvis det er det du planlegger å gjøre, er en av de andre sløyfene bedre optimalisert for den typen operasjon.
Bruk bare gjøre
sløyfer når du har et sett med data, eller du skal utføre en prosedyre som du vet må gjennomføres minst en gang før man kontrollerer tilstanden som dikterer antall henrettelser som skal utføres.
Med dette dekket har vi lagt ut alt vi trenger for å begynne å flytte inn i en diskusjon av funksjoner, attributter, omfang og andre grunnleggende aspekter ved objektorientert programmering.
.