Tipi di dati, scope delle variabili, operatori e stringhe.
[ZEUS News - www.zeusnews.it - 12-08-2008]
Tipi di dati
Iniziamo la seconda lezione parlando dei tipi di dati che Php è in grado di gestire. Php supporta 8 tipi di dati tra scalari e composti (o strutturati). I tipi scalari sono dati che possono essere ordinati in una sola dimensione come gli interi, i booleani, i numeri a virgola mobile e via dicendo. I tipi composti sono per esempio gli array e gli oggetti.
Di seguito la lista dei tipi:
1. boolean --> scalare: assume solo i valori true o false
2. intero --> scalare: numeri interi con segno
3. virgola mobile --> scalare: numeri in virgola mobile con segno
4. stringa --> scalare: una sequenza di caratteri
5. array --> composto: è una mappa che a ogni valore associa una chiave (o indice)
6. oggetto --> composto: può contenere proprietà e metodi
7. risorsa --> speciale: contiene un riferimento a una risorsa esterna come un gestore di un file aperto
8. null --> speciale: può contenere solo il valore null indicante che la variabile non contiene di fatto un valore.
<?php
$miaVar = 123; // la varibile è di tipo numerico (intero)
print 'La variabile è di tipo ' . gettype($miaVar) . '<br/>';
settype($miaVar,'string'); // Ora la varibile è una stringa
print 'Ora la variabile è di tipo ' . gettype($miaVar);
?>
Per alcuni sarà prematuro, ma dobbiamo ora introdurre un operatore che agisce sulle stringhe: ".". Il punto serve a concatenare due stringhe e nell'esempio viene utilizzato per unire le stringhe di testo 'La variabile...' e 'Ora la variabile...' con l'output della funzione gettype(mixed $var) che data una variabile come parametro ritorna una stringa contenente il suo tipo. settype(mixed &$var,string $type) serve a settare il tipo $type alla variabile $var e ritorna true in caso di successo e false altrimenti. Naturalmente per maggiori approfondimenti vi invitiamo a consultare la documentazione sul sito ufficiale.
La libreria standard prevede un insieme di funzioni per stabilire se una variabile appartiene a un tipo specifico: is_string(...), is_int(...), e via dicendo.
Scope della variabile
Dopo aver definito una variabile, possiamo usarla nel nostro programma ma non ovunque: dipende da dove la definiamo. Di norma una variabile può essere utilizzata dal punto in cui viene definita in avanti, cioè dal punto in cui - di fatto - viene utilizzata per la prima volta. Però ci sono delle eccezioni, come nel caso delle funzioni. Le variabili definite all'interno di una funzione sono locali e possono essere usate solo in quell'ambito. Analizziamo il codice che segue:
<?php
$miaVar=12;
function func()
{
$miaVar='ciao a tutti!';
print $miaVar . '<br/>';
}
func();
print $miaVar;
?>
La variabile $miaVar fuori dalla funzione ha valore 12, mentre al suo interno abbiamo creato un'altra variabile $miaVar che contiene una stringa. Dentro func() vediamo la variabile "interna", mentra da fuori vediamo quella esterna; si dice che la variabile interna ha nascosto quella esterna. Quando la chiamata a func() termina, $miaVar (interna) viene distrutta: si parla quindi di variabile locale.
Occorre evidenziare una cosa importantissima (che verrà ripresa parlando delle funzioni): se all'interno di func() non avessimo definito $miaVar, la $miaVar esterna non sarebbe stata comunque raggiungibile senza un piccolo "trucco"; questa cosa in effetti non è molto piacevole, soprattutto per chi proviene dal linguaggio C o dal C++. In questi linguaggi, l'ambito di una variabile globale è appunto globale: se da una funzione vogliamo accedervi, dobbiamo poterlo fare. In Php per poter accedere alla $miaVar esterna avremmo dovuto procedere come segue:
<?php
$miaVar=12;
function func()
{
global $miaVar;
print $miaVar . '<br/>';
}
func();
print $miaVar;
?>
A questo punto, da dentro func() ci riferiamo alla variabile esterna; per cui la chiamata alla funzione e la print successiva produrranno lo stesso risultato: 12.
Possiamo anche definire costanti utilizzando la funzione define(...). Una costante di fatto è una variabile che, una volta inizializzata, non può essere cambiata; il suo scope è sempre globale. Il nome di una costante non inizia con $ e per il resto segue le stesse regole dei nomi delle variabili.
<?php
define(COSTANTE,"12");
print COSTANTE;
?>
Nel nostro esempio abbiamo definito una costante di nome COSTANTE che vale "12"; definendo il valore senza le virgolette, avremmo ottenuto una costante intera.
Operatori
Tramite gli operatori possiamo manipolare le variabili. Abbiamo a disposizione operatori aritmetici, di stringa, logici e altri che vedremo via via.
Il primo operatore che abbiamo incontrato finora è =. L'uguale serve ad assegnare a una variabile un valore, che può essere una costante o un'elaborazione complessa tra più variabili.
Distinguiamo in Php tre tipi di operatori:
1. unari
2. binari
3. ternari
Gli operatori unari agiscono su un solo operando: sono ++ e -- e possono precedere o succedere una variabile:
<?php
++$i;
$x--;
$k++;
?>
Vedremo più avanti come cambia il comportamento di questi operatori a seconda del contesto e se vengono posti prima o dopo la variabile su cui operano.
Gli operatori binari lavorano su due variabili: gli esempi più classici sono le quattro operazioni fondamentali (i matematici riconoscono solo due operazioni fondamentali, ma questa è un'altra storia).
<?php
$x=4+1;
$y=$x-3;
$z=$x/$y;
$k=$z*18;
?>
Ovviamante esistono anche altri operatori. L'unico operatore ternario che abbiamo è l'if aritmetico, che tratteremo più avanti; dal nome però capiamo che lavoreremo con tre operandi.
Definiamo qui in modo semplicistico il concetto di espressione: un'espressione è del codice che calcola un valore. Nella definizione rientra anche la semplice assegnazione, come:
<?php
$x=6;
?>
Stringhe: operatori e funzioni
Trattiamo qui l'unico operatore che lavora sulle stringhe, il ".", e alcune funzioni che servono a manipolarle.
<?php
$nome='Mario';
$cognome='Rossi';
$nomeIntero=$nome . ' ' . $cognome;
print $nomeIntero;
?>
Abbiamo qui due variabili $nome e $cognome; la terza variabile, $nomeIntero, contiene la concatenazione delle due separate da uno spazio.
Abbiamo utilizzato sempre il carattere apice (') per racchiudere una stringa, ma Php prevede anche l'uso delle virgolette doppie (").
Il testo racchiuso tra due apici verrà mandato al browser così com'è, senza essere interpretato, a meno che non si tratti di alcuni codici di escape.
Se scrivessimo:
<?php
$x=6;
print 'La var vale $x';
?>
otterremo la scritta "La var vale $x". Utilizzando invece print "la var vale $x" otterremmo la scritta "La var vale 6". Si dice che l'apice produce un escaping parziale, mentre la virgoletta produce un escaping totale.
Nel caso che all'interno di una stringa tra apici debba comparire però l'apice, siamo costretti a proteggerlo tramite la seguente:
<?php
$x='Stringa con dentro un \'';
?>
Lo stesso vale se dentro a una stringa tra virgolette volessimo scrivere una virgoletta:
<?php
$x="Stringa con dentro una \"";
?>
All'interno delle virgolette, possiamo utilizzare caratteri di escape come "\n", "\t" e altri: questi producono rispettivamente un ritorno a capo e un tab in avanti di 4 spazi.
Attenti però; dovete ricordare che state producendo codice Html (o altro) e che nel browser non visualizzerete il tab o il ritorno a capo, ma questo avrà effetto sul sorgente Html generato. Se volete visualizzare un ritorno a capo nel browser dovrete usare <br/>.
Sconsigliamo l'uso dell'escaping totale sulle variabili, in quanto produce codice meno leggibile:
<?php
$x='xxx';
$y='yyy';
print "la var x vale $x mentre y vale $y";
?>
è meno leggibile di
<?php
$x='xxx';
$y='yyy';
print "la var x vale " . $x . " mentre y vale " . $y;
?>
Php mette a disposizione una serie di funzioni per manipolare le stringhe. Le più comuni sono strlen, strpos, substring e str_replace, che rispettivamente ritornano la lunghezza di una stringa, la posizione di una sottostringa, una sottostringa e una stringa con le ricorrenze di una sottostringa sostituite con un'altra. Alcuni esempi:
<?php
$stringa='Io sono una stringa!';
$len=strlen($stringa); // lunghezza
$pos=strpos($stringa,'sono'); // prima occorrenza di sono
// a partire da sinistra
$substr=substr($stringa,10,4); // ritorna 4 caratteri
// partendo dall'indice 10 (undicesimo carattere)
$rep=str_replace('sono','mucche',$stringa);
// sostituisce sono con mucche
print $stringa . '<br/>';
print $len . '<br/>';
print $pos . '<br/>';
print $substr . '<br/>';
print $rep . '<br/>';
?>
Il primo carattere di una stringa ha indice 0 mentre l'ultimo ha indice strlen($stringa)-1. Esistono molte altre funzioni per gestire le stringhe: vi invitiamo ad approfondire la loro conoscenza sul sito di riferimento.
Se questo articolo ti è piaciuto e vuoi rimanere sempre informato con Zeus News
ti consigliamo di iscriverti alla Newsletter gratuita.
Inoltre puoi consigliare l'articolo utilizzando uno dei pulsanti qui
sotto, inserire un commento
(anche anonimo)
o segnalare un refuso.
© RIPRODUZIONE RISERVATA |
|
|
||
|