Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP

Programmazione Orientata agli Oggetti in WordPress : Strutture di Controllo I

by
Difficulty:BeginnerLength:MediumLanguages:
This post is part of a series called Object-Oriented Programming in WordPress.
Object-Oriented Programming in WordPress: Types
Object-Oriented Programming in WordPress: Control Structures II

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 :

  1. L' Introduzione
  2. Le Classi
  3. I Data Types

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:

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 :

  1. $is_active
  2. $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 : 

Nell'esempio sopra citato, $total_count verrà incrementato di uno perchè $is_active è vero.

Alternativamente , diciamo che $is_active è impostato a falso

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.

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.

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 :

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:

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:

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.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.