Italian (Italiano) translation by Piergiorgio Sansone (you can also view the original English article)
Per quelli di voi che seguono la serie sin dall'inizio , sapete che ci stiamo occupando della programmazione ad oggetti specificatamente dalla prospettiva di un principiante.
Questo significa che stiamo trattando l'argomento non solo per coloro che stanno guardando come iniziare con il paradigma , ma stiamo guardando tutte le varie funzioni di PHP che compongono il linguaggio e che in ultima analisi sono utilizzate nel contesto della programmazione orientata agli oggetti.
Inoltre, lo stiamo facendo nell’ambito di WordPress in modo che, alla fine della serie, possiate vedere come tutto ciò può essere utilizzato all'interno di un esempio reale.
Se questa è la prima volta che leggi un'articolo di questa serie, allora ti raccomando di leggere gli articoli precedenti dato che ogni articolo di questa serie si basa sul precedente.
Finora , abbiamo trattato i seguenti argomenti :
In questo articolo , ci occuperemo invece delle strutture di controllo.
Che cosa sono le Strutture di Controllo?
"Strutture di Controllo" è un termine di fantasia , che descrive come possiamo, prendere,il controllo , come il codice scorre attraverso il nostro programma basato su una serie di fattori.
Per esempio, diciamo che vogliamo eseguire un certo insieme di istruzioni, quando una variabile è impostata, o ne vogliamo eseguire altre se un’altra variabile è impostata.
Oppure diciamo che avete una serie di dati che volete leggere ciclicamente attraverso la lettura di ogni valore, l’impostazione certi valori, o addirittura la creazione di certi valori.
In ogni caso, il modo in cui si va a fare questo , è attraverso l'uso di strutture di controllo. Nel resto di questo articolo, tratteremo due tipi di strutture di controllo: istruzioni condizionali e loop.
Anche se le istruzioni condizionali e cicli sono tipi di strutture di controllo che tratteremo nell’articolo, ogni una di esse ha dei sottoinsiemi
Per esempio , le strutture di controllo hanno :
- istruzioni
if/then
- istruzioni
switch/case
I
Cicli, dall’altra parte, sono di diverse tipologie:
for
foreach
do
while
Anche se questi possono essere dei nuovi costrutti per alcuni di voi, ne abbiamo già visto le basi negli articoli precedenti, in modo da avere tutto ciò di cui abbiamo bisogno per andare avanti.
Istruzioni Condizionali
A mio parere, le istruzioni condizionali sono alcune delle più facili da capire per come si leggono, più come frasi, rispetto a molti altri tipi di istruzioni di programmazione. Ad esempio, se state letteralmente dicendo "se questa condizione è vera, allora fate questa azione, altrimenti, fate questa azione."
Certo, diventa un pò più complicato di cosi, se avete, diciamo, un paio di altre condizioni da controllare, prima di decidere una linea di condotta, ma l'essenza di tutto ciò, rimane la stessa.
Quindi, detto ciò, cominciamo a dare un'occhiata a una delle due varianti condizionali che vengono offerte da PHP.
Istruzioni if/then
Come in precedenza accennato, l'istruzione condizionale più fondamentale è nella forma if/else
e generalmente la vedrete scritta cosi:
<?php if ( condition ) { // Take on action } else { // Take another action }
Naturalmente, questo ancora non spiega come realmente lavora una struttura di controllo, lo fa? Voglio dire, certo, fornisce uno scheletro per dare un'occhiata,ma lascia un pò a desiderare.
Vale a dire , che cos'è questa riga condizionale? In secondo luogo, quali sono le linee di azione che la struttura di controllo può assumere?
In primo
luogo, la condizione si riferisce a qualsiasi istruzione che può essere valutata come un'espressione boleana. Ha senso? In poche parole , la condizione rappresenta qualsiasi dichiarazione che può essere valutata con vero
o falso
Quindi, per esempio , diciamo che abbiamo due valori :
$is_active
$total_count
Questi sono ovviamente valori un pò generici, ma poniamo che se $is_active
è impostato a true, incrementeremo il $total_count
di uno; oppure sottraiamo $total_count
di uno .
Ecco come potrebbe sembrare il codice :
<?php $is_active = true; if ( $is_active ) { $total_count = $total_count + 1; } else { $total_count = $total_count - 1; }
Nell'esempio sopra citato, $total_count
verrà incrementato di uno perchè $is_active
è vero.
Alternativamente , diciamo che $is_active
è impostato a falso
<?php $is_active = false; if ( $is_active ) { $total_count = $total_count + 1; } else { $total_count = $total_count - 1; }
In questo esempio,$total_count
si decrementa si uno quendo $is_active
è falso
Addesso, prima di guardare il prossimo esempio, è importante capire che questi sono esempi estremamente banali. Lo scopo di questi esempi non è mostrare come prendere operazioni complesse e combinarle in un costrutto condizionale , ma invece come utilizzare un costrutto condizionale.
Quando arriveremo alla parte della serie in cui cominceremo a scrivere un plugin, allora vedrete come possiamo usare espressioni più elaborate all'interno di una applicazione pratica.
Detto
questo, diamo un'occhiata ad uno o più esempi di istruzione if / then. In questo esempio, daremo uno sguardo a if / elseif
/ else
. Per iniziare, supponiamo che $is_active
è impostata su true e $TOTAL_COUNT
è impostato su 10.
<?php $is_active = false; $total_count = 10; if ( $is_active ) { $total_count = 1; } else if ( $total_count >= 10 ) { $total_count = $total_count + 1 } else { $total_count = $total_count - 1; }
Il codice di cui sopra , può essere letto in questo mod:
- Se
$is_active
è impostata su vero e$TOTAL_COUNT
è impostato su 1$is_active
non è vero - Al contrario, se
$total_count
è maggiore o uguale a 10, poi incremento il$total_count
di 1 il$total_count
è uguale a 10, quindi dovremo incrementare il$total_count
ad 11 - se
$total_count
non era maggiore o uguale a 10, allore dovremmo decrementare$total_count
di 1
Quando il blocco di codice termina l'esecuzione nell'esempio precedente , $total_count
sarà uguale a 1
Ha senso?
Questa è la ragione per cui le chiamiamo strutture di controllo : queste istruzioni o (valutazioni) ci consentono di determinare quale codice eseguire in base a certe condizioni.
Per coloro che conoscono la programmazione da un pò, avete familiarità con espressioni molto più complesse che utilizzano operatori come &&
e ||
e cosi via. Ci arriveremo , ma non in questo articolo.
Detto tutto ciò, si tratta di un argomento di cui sono a conoscenza che tratteremo, ma non oggi.
Niente altro ?
Per quelli di voi che sono già esperti con la programmazione, allora è probabile che abbiate familiarità dell' operatore ternario.
Argomento che non tratteremo in questa particolare serie di articoli in quento fuori scopo , tuttavia se amate il senso dell'avventura e siete alla ricerca di un modo più conciso di scrivere una semplice istruzione if/else
, allora date un occhiata all' operatore ternario sul manuale PHP .
Istruzioni switch/case
Detto questo , c'è un altro tipo di operatore condizionale di cui dobbiamo parlare prima di passare al prossimo argomento.
Questo particolare costrutto rientra ancora nelle istruzioni condizionali, tuttavia viene utilizzato meno frequentemente rispetto alla sua controparte if/else
Come indicato dal titolo, questo si chiama istruzione switch/case
. Anche se personalmente ritengo che il linguaggio la renda più complicata da seguire,il modo in cui il controllo scorre non è molto differente ciò che abbiamo già visto.
Come abbiamo fatto con l'istruzione if/else
, vediamo principalmente come è strutturata l'istruzione switch/case
e poi daremo un occhiata ad un paio di banali esempi.
<?php switch ( condition ) { case 'value': // do action break; case 'another value': // do a different action break; default: // perform a default action break; }
La prima cosa che si nota circa questa particolare tipo di operatore condizionale, è che la valutazione avviene in un singolo posto: in cima al blocco di codice subito dopo l'istruzione switch
.
Qui, la valutazione avviene una volta e per ogniuna delle successive istruzioni case
è ciò che determina quale azione verrà intrapresa. Vi è anche l'istruzione break
inclusa in ogniuna delle istruzioni che tratteremo, e c'è anche un blocco di codice di default
nella parte inferiore che vedremo entro la fine di questo articolo.
Ma prima di fare tutto questo, andiamo ad impostare un esempio leggermente più pratico di quanto assomigli un'istruzione switch/case
di base.
Supponiamo di aver un valore, $first_name
, e poi vogliamo prendere una certa linea di condotta in base al primo nome della persona. in questo esempio, imposteremo l'indirizzo di posta elettronica in base al nome della persona. Se non riconosciamo il nome della persona imposteremo il valore uguale a null
.
Certo , è un esempio forzato ma serve a dimostrare il punto :
<?php $persons_name = 'Tom'; $email_address = ''; switch ( $persons_name ) { case 'Tom': $email_address = 'tom@acme-server.com'; break; case 'David': $email_address = 'david@acme-server.com'; break; default: $email_address = NULL; break; }
Diamo un occhiata al flusso di controllo nell'esempio di sopra:
- Definiamo
$persons_name
come 'Tom' ed inizializziamo$email_address
come stinga vuota. - Passiamo la variabile
$person_name
all'istruzione switch per la verifica. - La struttura di controllo verificherà
$person_name
con ogni valore specificato nelle istruzioni case. - Dal momento che 'Tom' è il valore della variabile $persons_name, la variabile $email_address verrà impostata con 'tom@acme-server.com'
se passeremo il nome 'Dave' alla variabile $person_name allora la variabile $email_address verrà configurata con 'david@acme-server.com'.
Successivamente, se passeremo un nome diverso da 'Tom' o 'David' allora la variabile $email_adress
verrà valorizzata con NULL
. E'importante notare anche che il controllo switch/case
è case sensitive. Ciò significa che se passassimo 'tom' invece di 'Tom', allora verrebbero trattati come nell'ultimo caso (valorizzati a NULL).
Infine, ogni istruzione case
finisce con un'istruzione break
. Questo è importante perchè break
indica al codice di uscire dall'istruzione switch/case
e di continuare il processo con qualsiasi istruzione a seguire.
E 'estremamente importante capire che, se si dimentica un'istruzione break, allora il codice seguirà l'istruzione case immediatamente successiva, che può ovviamente avere risultati irregolari (come l'impostazione del $email_address
sbagliato).
Un esempio di dove è possibile sfruttare questo a vostro vantaggio è il seguente:
<?php $persons_name = 'Tom'; $email_address = ''; switch ( $persons_name ) { case 'tom': case 'Tom': $email_address = 'tom@acme-server.com'; break; case 'David': $email_address = 'david@acme-server.com'; break; default: $email_address = NULL; break; }
Nell'esempio sopra indicato , abbiamo definito casi per entrambi 'Tom' quando è minuscolo o ha la prima lettera maiuscola e dimostra come il codice seguirà l'istruzione case
successiva.
Ma c'è un modo migliore per rendere questo più a prova di proiettile:
<?php $persons_name = 'Tom'; $email_address = ''; switch ( strtolower( $persons_name ) ) { case 'tom': $email_address = 'tom@acme-server.com'; break; case 'david': $email_address = 'david@acme-server.com'; break; default: $email_address = NULL; break; }
Notate che, questo richiede la funzione PHP strtolower
al fine di costringere il contenuto della variabile $persons_name
completamente minuscola. Questo ci consente di affinare ancora di più le nostre istruzioni case.
Cosa vedremo nel prossimo articolo?
In questo articolo, abbiamo visto il primo gruppo di stutture di controllo che sono disponibili in PHP. No, queste non rientrano esplicitamente nella programmazione orientata agli oggetti, ma prima affrontare aspetti fondamentali del paradigma, abbiamo bisogno di capire tutti i punti più fini che ci permettono di scrivere codice orientato agli oggetti.
A questo punto , continueremo la nostra discussione sulle strutture di controllo nel prossimo articolo, parlando dei loops.
Dopo questo, saremo pronti a rivolgere la nostra attenzione alle funzioni. Per coloro che hanno familiarità con la programmazione procedurale, le funzioni non sono una novità; Tuttavia, se siete nuovi alla programmazione orientata agli oggetti, poi ci sono una serie di fattori che le differenziano da come vengono utilizzate nella programmazione procedurale.
Quindi, questa la strada per il prossimo set di articoli. Come al solito, i vostri feedback sono i benvenuti e non vedo l'ora di continuare la nostra conversazione nel prossimo articolo.
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Update me weeklyEnvato Tuts+ tutorials are translated into other languages by our community members—you can be involved too!
Translate this post