Se hai seguito con noi questa serie, sicuramente sai che stiamo guardando i concetti di programmazione orientata agli oggetti dal punto di vista del principiante.
Nello specifico, stiamo esaminando l'argomento per coloro che vogliono familiarizzare con il paradigma, ma anche su come applicare i concetti nel contesto di WordPress; tuttavia, prima di iniziare a lavorare con programmazione orientata agli oggetti e WordPress, dobbiamo gettare le basi usando le funzionalità di base fornite da PHP.
In definitiva, stiamo lavorando per creare un esempio pratico di programmazione orientata agli oggetti creando un plugin per WordPress. Ma prima di farlo, ci sono alcune altre cose di cui abbiamo bisogno di discutere.
Se è la prima volta che leggi questa serie, ti consiglio di consultare gli articoli precedenti poiché ogni articolo di questa serie si basa su quello precedente. Se, d'altra parte, sei qualcuno che ha più familiarità con la programmazione orientata agli oggetti, allora potresti voler rivisitare la serie una volta entrati nell'applicazione pratica delle idee.
Fino a questo punto, abbiamo trattato i seguenti argomenti.
In questo articolo, concluderemo la discussione sulle strutture di controllo esaminando i vari tipi di loop forniti da PHP.
Se hai letto l'articolo precedente, ti ricordi che le "strutture di controllo" si riferiscono a costrutti forniti dalla lingua (nel nostro caso, PHP) che ci permettono di modificare il codice in tutto il programma sulla base di un certo numero di condizioni.
Nell'ultimo articolo, abbiamo esaminato il modo in cui possiamo farlo attraverso l'uso di istruzioni condizionali che sono istruzioni che costringeranno il programma verso il basso in un percorso di esecuzione basato su un condizionale (ad esempio se una variabile è impostata, se una condizione è vera , e così via).
Ma questo non è l'unico tipo di controllo che abbiamo. Oltre ai condizionali, abbiamo la possibilità di eseguire iterazioni (o cicli) attraverso insiemi di dati in modo che possiamo agire su ogni elemento di un insieme di dati. Possiamo aggiungere dati, rimuovere dati, visualizzare dati, ordinare i dati e molto altro.
Ad esempio, supponiamo di avere un set di dati, forse un set di 10 post, e che vogliamo scorrere e stampare il titolo e la data di ogni post. I loop ci permettono di fare questo.
Qualunque cosa tu stia cercando di fare, ci sono quattro tipi di loop che PHP fornisce che ci permettono di scorrere attraverso set di dati. In questo articolo, vedremo un esempio di ciascuno e alcune sfumature di ognuno di essi in modo che abbiamo ancora un altro set di strutture di controllo che possiamo usare quando verrà il momento di iniziare a scrivere codice orientato agli oggetti.
per
LoopsIl per
il ciclo è spesso considerato il più complicato dei loop a causa della natura di come si scrive il codice. Il flusso di esso sembra un po 'innaturale.
In genere, siamo abituati a scrivere codice riga per riga in modo tale che ciascuna istruzione sia impostata su una singola riga; tuttavia, con per
cicli, abbiamo un approccio leggermente diverso. In primo luogo, condividerò un esempio di base, ne esamineremo gli aspetti e quindi esamineremo un approccio più dettagliato.
Ecco un esempio di base che conterà fino a 10 e mostrerà ogni numero sullo schermo mentre lo fa:
per ($ i = 0; $ i < 10; $i++ ) echo $i;
Nella prima riga del ciclo (tra parentesi dopo il per
dichiarazione), stiamo facendo quanto segue:
$ i
e impostandolo uguale a zero$ i < 10
$ i
dal valore di 1 (utilizzando l'operatore post-incremento) dopo ogni iterazioneNel corpo del ciclo, stiamo semplicemente usando PHP eco
funzione per stampare il valore corrente di $ i
. Mentre il ciclo elabora le istruzioni, vedremo 0-9 stampati sullo schermo (dato che stiamo iniziando a zero e correndo mentre $ i
è inferiore a 10).
Persone diverse hanno tecniche diverse per come leggono il codice, quindi la strategia che sto per raccomandare potrebbe non essere la migliore per te, ma quando leggo questi tipi di loop, normalmente li leggo in questo modo:
Con $ i che inizia da zero e mentre $ i è minore di 10, esegui il corpo del ciclo, quindi incrementa $ i di 1.
Il problema è questo $ i
può iniziare con qualsiasi valore, può contare fino a un importo arbitrario e può essere incrementato di qualsiasi valore.
Più lavoro facciamo per
loop, più è probabile che prendiate alcune cose che possono ottimizzare le prestazioni. Per ora, tuttavia, sono state trattate le basi del ciclo for e le tecniche avanzate sono un po 'al di fuori dello scopo di questo particolare articolo.
per ciascuno
Loopsper ciascuno
i loop sono simili ai cicli for mentre eseguono l'iterazione attraverso un set di dati, ma lo fanno in modo sequenziale. Ciò significa che non esiste un modo semplice per scorrere tutti, ad esempio, due elementi in una lista (come puoi, per esempio, con, $ i + 2
nel per
loop).
Questo tipo di loop è probabilmente il più leggibile. Per il nostro esempio, supponiamo di disporre di un array e che la matrice di dati contenga i seguenti nomi: Alpha, Bravo, Charlie, Delta, Echo e Foxtrot. Il nome dell'array è memorizzato in una variabile chiamata nomi $
.
In questo caso, possiamo impostare a per ciascuno
loop per scorrere i nomi e visualizzare ciascuno di essi sullo schermo in questo modo:
$ names = array ('Alpha', 'Bravo', 'Charlie', 'Delta', 'Echo', 'Foxtrot'); foreach ($ nomi come $ nome) echo $ nome;
Abbastanza facile da configurare, non è vero??
Proprio come abbiamo condiviso un modo per leggere l'iniziale per
loop nella sezione precedente, puoi leggere il per ciascuno
loop nel modo seguente:
Per ogni nome nella raccolta di nomi, visualizzalo sullo schermo.
O, forse più in generale:
Per ogni elemento della collezione, visualizzalo sullo schermo.
C'è un altro aspetto del per ciascuno
loop che potremmo coprire più dettagliatamente più avanti nella serie, ma l'idea principale è che se hai familiarità con l'array associativo, cioè gli array che sono indicizzati con una chiave e che hanno un valore associato, puoi impostare un per ciascuno
loop per recuperare ogni chiave e valore per ogni iterazione del ciclo.
Ad esempio, diciamo che abbiamo il seguente array associativo:
$ heroes = array ('alien' => 'Superman', 'human' => 'Batman');
Quando si utilizza un array associativo come questo, è anche possibile impostare a per ciascuno
loop come questo:
foreach ($ heroes come $ tipo => $ nome) echo $ nome. ' è un ' . $ Tipo;
Ciò comporterà l'uscita leggendo qualcosa come 'Superman è un alieno' perché 'Superman' è il valore e 'alieno' è il suo tipo (o la sua chiave).
La forma più generica di questo ciclo è la seguente:
foreach ($ collection as $ key => value) // I lavori vanno qui
Niente di terribilmente complicato.
mentre
LoopsCon le variazioni del per
cicli coperti, è tempo di rivolgere la nostra attenzione a mentre
cicli di cui esistono due varianti (sebbene siano chiamate qualcosa di diverso: mentre
cicli e fare
cicli), ma differiscono solo in un modo minore.
Ma prima di vedere come si differenziano, diamo un'occhiata al mentre
loop, il suo formato di base, come usarlo e come si confronta con il precedente per
loop.
Innanzitutto, il formato di base di a mentre
ciclo è il seguente:
while (condition) // do work
Si noti che questo ciclo è diverso rispetto ai cicli precedenti in quanto accetta un condizionale come parte dell'istruzione iniziale (da qui il motivo per cui abbiamo coperto i condizionali nel nostro ultimo articolo).
Il ciclo funziona innanzitutto controllando se la condizione è vera, eseguendo il blocco di codice nel corpo del ciclo e quindi verificando nuovamente la condizione. Ciò significa che mentre
loops può fare qualunque unità di lavoro purché la condizione specificata sia vera.
Quindi, certo, puoi scorrere un elenco di numeri, eseguire una raccolta di dati, ma puoi anche fare certe cose mentre, ad esempio, un valore booleano è ancora vero. E una volta che il flag raggiunge false, il ciclo while termina.
Diamo un'occhiata a un esempio in cui stiamo facendo scoppiare gli elementi di un array. Supponiamo che l'array iniziale abbia 100 elementi e che lo faremo fino a quando l'array non avrà ancora 50 elementi:
while (50! == count ($ elementi)) array_pop ($ elementi);
Qui, la condizione continuerà a essere valutata fino al numero degli elementi nel file $ elementi
la matrice è stata ridotta a 50 voci.
Come abbiamo fatto con i cicli precedenti, questo è un modo che puoi leggere a mentre
ciclo continuo:
Mentre questa condizione è vera, eseguire il seguente codice.
Ovviamente, questo è il modo in cui appare comunque nel codice, no??
fare
LoopsFinalmente, fare
i cicli sono quasi Esattamente piace mentre
i loop eccetto che itereranno almeno una volta prima di controllare la condizione.
Prima di dare un'occhiata a un esempio, ecco la struttura di base del fare
ciclo continuo:
do // do work while (condition);
Relativamente chiaro, giusto?
Quindi impostiamo un esempio di base che ci ha permesso di creare un array e popolarlo solo con numeri pari. Per fare questo, abbiamo bisogno di:
Detto questo, si può impostare il codice in modo che assomigli a questo:
$ i = 1; $ even_numbers = array (); do if (0 === ($ i% 2)) $ even_numbers [] = $ i; $ i ++; while ($ i <= 100 );
E infine, come con il resto dei loop, puoi leggere questi tipi di loop nel modo seguente:
Esegui il seguente blocco di lavoro, quindi controlla se la seguente condizione è vera. Se è così, continua a fare il lavoro.
Quando si tratta di fare
loop, se stai lavorando con una collezione, vuoi assicurarti che la collezione sia non vuoto prima di lavorarci perché eseguirà il codice nel blocco del ciclo prima di verificare se la condizione è vera. Ciò può causare errori se si tenta di lavorare su un set di dati che è vuoto.
Naturalmente, se è quello che hai intenzione di fare, uno degli altri loop è ottimizzato per quel tipo di operazione.
Usare solo fare
loop quando hai un set di dati o stai per eseguire una procedura che tu conoscere deve essere eseguito almeno una volta prima di verificare la condizione che determina il numero di esecuzioni che devono essere eseguite.
Con questo trattato, abbiamo preparato tutto ciò che dobbiamo fare per iniziare a passare a una discussione su funzioni, attributi, scope e altri aspetti fondamentali della programmazione orientata agli oggetti.
.