domenica, gennaio 02, 2011

Basi di Dati: PHP, Sintassi e Tipi

Sintassi PHP

Gli script PHP vanno messi in TAG così:
<?PHP
/*
Codice
*/ ?>
La sintassi è simile a C (commenti con // o /**/, ; a fine riga
Posso includere un altro file php con la funzione include('filename.php')

Gestione dei tipi

Le variabili iniziano con $ e possono iniziare con un numero: $2Variabile
I nomi delle variabili sono case sensitive

E' loose type: la variabile si dichiara assegnandole un valore, il tipo è deciso a runtime dall'interprete

Tipi di dato
Scalari: Boolean, Integer, Float, String
Complessi: Array, Object
Speciali: Resource, null

Posso usare come Boolean anche altri tipi. Vengono valutate a false anche: 0, 0.0, "", "0" e null (da far vomitare!)

Interi: se inizio un intero con 0 si intenderà su base ottale (quindi: 10 vale 10, ma 010 vale 8!). 0x10 è in base esadecimale = 16

Stringhe: si può quotare sia con apice singolo che doppio. Se uso il doppio apice ed indico il nome di una variabile questo verrà valutato come il contenuto di tale variabile. Es.:
$Variabile = "mamma"; $Var2="Ciao $Variabile"; "Var2 conterrà in realtà la stringa "Ciao mamma". Posso inserire caratteri di escape come "\n" (="a capo").
Se devo attaccare una variabile ad un altro pezzo di testo posso usare {}. Es.: $Var3="Oh ${Variabile}saura!"; Var3 varrà "Oh mammasaura!".
Sintassi Here Document: (non riporto, ma consiglio di rivederle tutte qui)
Il casting di un array in una stringa produce la stringa "array" (non il contenuto)! Stessa cosa per object e null.
Operatore di concatenazione di stringhe: . (punto)

Array: possono essere "standard" (=con chiave numerica) o con chiave stringa (o alcuni elementi con chiave numerica e altri con chiave stringa), gli elementi dell'array possono essere di qualsiasi tipo.
Creare un array, modo esplicito: funzione array: $Var=array(Chiave1=>Valore1, Chiave2=>Valore2) o senza chiavi: $Var=array(Valore1, Valore2) o misto: $Var=array(Chiave1=>Valore1, Valore2). Se imposto una chiave numerica e poi un elemento senza chiave esplicita l'indice adottato sarà pari all'indice più alto aumentato di uno, nel esempio "due" avrà chiave 17: $Var=array(16=>"uno", "due")
Se non ci sono chiavi numeriche la prima è 0 (base zero).
Funzione array_keys(array) ritorna le chiavi di un array. array_key_exists(chiave, array) ritorna true o false se la chiave esiste o meno.
Acesso ad elementi dell' array (sia lettura che scrittura) con parentesi quadre: $MyArr["uno"]=1; Se l'array non esiste così viene definito in modo implicito
Per togliere un elemento dall'array uso la funzione unset($array[chiave]). unset($array) cancella tutto l'array
count($array) Conta il numero di elementi in un array
Convertendo da un tipo scalare ad array si ottiene un array con quello scalare come unico elemento di indice 0.
Convertendo da un object ad array si ottiene un array con elementi pari al valore delle proprietà di tale oggetto e chiavi pari ai nomi delle proprietà stesse
Convertendo da null ad un array si ottiene un array vuoto.

Funzione gettype($Varname) ritorna il tipo
is_int($Varname) ritorna true se è di tipo intero, is_string($Varname) ritorna true se è stringa, is_null($Varname) ritorna true se il contenuto è null

Funzione echo: echo $Var scrive sulla pagina web il contenuto di $Var
Funzione print: stessa di echo (ma ritorna un valore e fa delle formattazioni)
Funzione print_r(array) stampa il valore di un array. var_dump(object) stampa il valore di un object. Sono funzioni di debug.

Posso forzare dei casting. Es.: $Var=1; $Var2=(string) $Var;

Strutture di controllo

if, elseif, else come in java
switch come in C (switch (variabile) { case
valore: codice [break;]; default: codice; }. Una volta che si è trovato un valore valido è eseguito anche il codice dei successivi case (e default)!!!
operatore condizionale ternario: $var
=
condizione
?
ValoreSeVero
:
ValoreSeFalso

while (condizione) {}
do {} while (condizione)
for identico a java
foreach (array
as
$k
=>
$val) {codice} permette di iterare le chiavi ed i valori di un array. Il codice viene eseguito per ogni coppia chiave/valore dell'array. Il codice può fare riferimento al valore della chiave con la variabile $k e al valore co $val. Mettendo solo foreach (array
as
$val) {codice} ciclo solo i valori
break esce dal ciclo
continue permette di saltare all'iterazione successiva

Definire una funzione:

Non sono costrette a ritornare un valore.
function
nomefunzione ($arg1, $arg2 …) { codice; [return($var)] }

Gli argomenti possono avere un valore di default:
function miafunzione ($arg1, $arg2 = 'Ciao') {return($arg2) }
Ovviamente dopo una variabile con default non possono essercene altre senza il default (assegnamento posizionale!)

Il codice che non si trova in nessuna function viene eseguito quando viene incontrato. Quello nelle function solo se vengono esplicitamente richiamate

Scope delle variabili

All'interno di una funzione non vengono viste le variabili definite fuori, ma solo quelle passate o definite dentro. Per referenziare una variabile definita all'esterno uso $GLOBALS['nomevariabile']
Posso anche definire due variabili dentro una funzione specificando che sono 2 variabili globali con l'istruzione global. Es:
$a = 1;
$b = 2;
function miafunc() {
    global $a, $b;
    return $a+$b;
}
E' possibile definire una variabile globale anche dentro una funzione preponendo la parola chiave global (es. global
$miavar;)

Passaggio di parametri per riferimento

Apponendo il carattere & davanti a $ si intendono passati per riferimento e non per valore (default). Es:
$a = 1;
$b = 1;
function miafunc(&$par1, &$par2) {
    $par1 += $par2;
}
miafunc $a, $b
In uscita da miafunc il valore di $a sarà effettivamente cambiato

Oggetti

Si crea una class con la parola chiave class (posso specificare la classe base con extends):
class mia_class extends altraclass {
    public $prop1
    function __construct() {}
    public function donothing() {}
}

Modificatori d'accesso: public, private, protected

Nome del costruttore: __construct() {}
Nome del distruttore: __destruct() {}

Supporto alle interfacce ed ereditarietà multipla

Costanti di classe (con const)

Proprietà e metodi statici

Metodi e classi astratte

Gestione delle eccezioni con try, throw, catch
Nel catch posso specificare i tipi di Exception (che sono classi che estendono Exception): try {} catch (miaexception $e) {}

Richiamare metodi di classe (ie conclusioni, non esposto nelle video lezioni!)

Per richiamare il metodo di un oggetto si usa ->
Es: miooggetto->miometodo()

Per richiamare metodi statici di una classe analogamente si usa :: es. miaclasse::miometodostatic

Nessun commento: