php4people … 13% refresh

3 Aprile 2008

[fp4] Definizione di Costrutto in PHP

Un Costrutto deve essere considerato alla stregua di un comando che ordina al motore di “trattare” una o più informazioni ad esempio immagazzinandole oppure mandandole in stampa su schermo. A volte può apparire simile ad una funzione ma generalmente si differenzia per due motivi: spesso non ha bisogno di racchiudere tra parentesi le informazioni su cui è chiamato ad agire; è un comando che ordina al motore di compiere un’azione prestabilita con conseguenze dirette sull’esecuzione dello script chiamante.

Per spiegarci: un costrutto è un comando elementare ed intuitivo che è parte costitutiva del linguaggio PHP e per questo grammaticalmente più libero di una funzione standard (già dichiarata nel motore PHP) o di una customizzata (creata dal programmatore).

I costrutti sono ovunque nel linguaggio PHP e spesso definiscono azioni determinanti ai fini di esecuzione di uno script. Esistono costrutti che servono per mandare in stampa su schermo (output) i contenuti delle variabili; altri pensati per una separazione ideale tra codice php e codice html, etc.

La grammatica base per l’esecuzione di un costrutto in uno script è:

costrutto [contenitore[contenuto]];

Un esempio con il costrutto echo:

echo $a;
echo “pippo”;
echo 3;

Nella riga 1 il costrutto echo è chiamato ad agire sul contenuto $a. Stesso discorso per la riga 2, con la differenza che trattandosi di stringa alfa-numerica libera (ossia non assegnata ad una variabile) è necessario il familiare contenitore dei doppi apici (o apici singoli, ma questo è un discorso che al momento non ci riguarda). La riga 3 invece agisce su una stringa numerica e la definizione di variabile ricorda che non sono necessari apici per lavorare con questo tipo di stringhe.

Come in ogni cosa umana esistono però delle eccezioni alle regole, frutto della necessità di adeguare la rigidità di una regola alle necessità contingenti. Esistono eccezioni anche tra i costrutti. Queste eccezioni riguardano alterazioni più o meno significative delle “regole” sulle quali ci si basa per stabilire di essere in presenza di un costrutto. La “regola” informa che un costrutto (spesso) non ha bisogno di racchiudere tra parentesi le informazioni su cui è chiamato ad agire. Spesso, ma non sempre. Un costrutto è un comando, certo,  che però ha analogie (più o meno strette) con l’elemento più diffuso e importante nel linguaggio PHP: la funzione.

Dalla definizione di funzione sò che se trovo in uno script righe di codice tipo …

function esempio(){
  $uno = 1;
  $due = 2;
  $tre = $uno.$due;
  return $tre;
};

… sono in presenza di una dichiarazione di una funzione. Ebbene il costrutto if .. else un esempio un pò infelice, che per ora lascio. Infelice perché più che costrutto si tratta di una struttura di controllo sembrerebbe seguire la stessa logica:

if ($a >= $b){
  echo $a;
}else{
 echo $b;
};

Esistono delle informazioni incluse nelle parentesi, come le parentesi graffe che chiamano l’esecuzione di altre informazioni (nel nostro caso si chiama l’esecuzione del costrutto echo). Ma non siamo in presenza di una funzione perché:

  1. un costrutto è parte integrante dello script che lo “chiama” mentre una funzione è indipendente dallo script chiamante.
  2. un costrutto non agisce sulle informazioni che gli vengono assegnate ma con esse.

Per chiarire il punto 2: un costrutto utilizza le informazioni (variabili, stringhe) per muoverle da A a B (ad esempio nel caso di costrutti che mandano in output le informazioni assegnate) oppure per capire se una certa richiesta può essere soddisfatta (nell’esempio if .. else: se $a è maggiore o uguala $b allora …); una funzione è chiamata ad agire sulle informazioni che gli sono state assegnate in fase di dichiarazione. che l’azione si concluda con la chiamata di un costrutto o con operazioni aritmetiche o in altro modo non è importante. E’ invece importante capire che la funzione agisce SU e non CON le informazioni ad essa assegnate.

Entrambi (Costrutti e Funzioni) sono fondamentali per l’esecuzione di uno script PHP. Può accadere che in uno script non ci sia uno dei due elementi, mai però che siano assenti entrambi… sempre che si voglia dare un senso all’estensione .php del file che si crea. Un’unica eccezione: il caso in cui il file PHP sia stato creato per essere un semplice contenitore di dati. Questa è un’eccezione interessante e particolare che nella realtà di applicazioni – PHP professionali e non – viene spesso (e volentieri) utilizzata per creare i file chiamati a contenere info generiche sulla configurazione di un’applicazione (esempio: connessione ad un database, opzioni generiche di default, etc).

Esiste poi una categoria di “costrutti atipici” che costrutti non sono ma che non sono inquadrabili in nessun altra categoria sintattico-grammaticale del linguaggio PHP. Per comodità sono definite stringhe, ma pur avendo l’aspetto di stringhe non si comportano come tali, anzi, si avvicinano molto di più alla definizione di costrutti che a quella di stringhe.

Di seguito la lista dei costrutti e delle stringhe speciali trattati in php4people:

  • echo » costrutto utilizzato per l’output su schermo di una variabile o di una stringa in generale.
  • heredoc » stringa speciale spesso utilizzata per separare il codice PHP dal layout HTML.
  • array() » contenitore d’informazioni associate ad indici.

1 Commento »

  1. [...] in_array(), ksort(), rsort(), unset() — ferenir @ 11:27 array() è una funzione o un costrutto del linguaggio PHP ? array() è un costrutto atipico. Atipico perché non è possibile omettere le [...]

    Pingback di [fp11] array() « php4people … 12% refresh — 12 Aprile 2008 @ 11:54


RSS feed dei commenti a questo articolo. TrackBack URI

Lascia un commento

Blog su WordPress.com.