PHPSeconda parte
La conversione automatica o implicita dei tipi: il cast
Il PHP effettua in maniera trasparente, ovvero senza una esplicita indicazione, delle
conversioni di tipo ogni qualvolta deve effettuare una operazione su un tipo di dati
diverso da quello atteso. Esempio:
<?php
echo '25' * '10';
?>
Abbiamo chiesto al PHP di mostrarci il risultato di una moltiplicazione tra due stringhe.
Vediamo cosa succede:

il PHP deve risolvere l'espressione '25' * '10' (questa espressione sulle stringhe non ha
senso) ;

poiché si tratta di un operatore algebrico (la moltiplicazione *), il PHP converte
entrambe le stringhe ( '25' e '10' ) in numeri. Questa operazione di conversione di tipo
(da tipo stringa a tipo numero) viene detta cast.

il PHP adesso può effettuare il prodotto tra i numeri (25 e 10) e mostrare il risultato
250;
Ovviamente questa conversione può portare a risultati privi di significato: "casa" * "3"
sarà uguale a 0 poiché la stringa "casa" non sottintende un valore numerico e perciò
sarà convertita nel numero 0.
Vediamo ora un esempio di conversione da numero a stringa:
<?php
echo 'un numero a caso: ' . 43;
?>
In questo caso il numero 43 verrà convertito in stringa prima di essere accodato attraverso
l'operatore "." (concatenazione di stringhe) che lavora solo su stringhe.
l caso più interessante di conversione di tipo è quello che da come risultato il tipo booleano.
Spesso capita che il PHP debba eseguire un'operazione e si aspetta che i dati su cui
lavorare siano di tipo booleano (come nella condizione del costrutto IF) ma invece gli
vengono forniti dati di altro tipo (interi, stringhe, array). PHP procederà quindi ad una
conversione che seguirà queste regole.

Tutti i numeri sono convertiti in true tranne lo 0

Tutte le stringhe sono convertite in true tranne le stringhe vuote (" ") e quella "0"

Tutti gli array sono convertiti in true tranne quelli vuoti (senza elementi)
Vediamo un esempio
<?php
$array = array();
// conversione implicita da array a booleano
if($array)
{ echo 'l'array $array ha almeno un elemento <br>';}
else
{ echo 'l'array $array è vuoto <br>';}
$stringa = 'ciao';
// conversione implicita da stringa a booleano
if($stringa)
{ echo 'la stringa $stringa vale ' , $stringa;}
else
{echo 'la stringa $stringa è vuota';}
$numero = 123;
// conversione implicita da numero a booleano
if($numero)
{echo 'la variabile $numero è diversa da 0';}
else
{ echo 'la variabile $numero è uguale a 0';}
?>
Funzioni Matematiche (alcune le trovate a pag 274 del libro)
Elenco completo delle funzioni matematiche: http://php.net/manual/it/ref.math.php
Il protocollo HTTP che sovrintende tutte le connessioni web non è in grado di tenere
traccia di eventuali scelte o particolari dati trasmessi tra client e server. Per questa
ragione in PHP è stato implementato un meccanismo di gestione delle sessioni, laddove
per “sessione” si intendono tutte le interazioni avvenute tra browser e server fino alla
chiusura del browser stesso.
In questo modo si potrà tenere traccia di eventuali precedenti scelte fatte dall’utente
come, ad esempio, i prodotti scelti in un carrello oppure l’essersi loggato in un’area
riservata.
Come funzionano le sessioni PHP
Quando un client si connette al server per la prima volta, il PHP genera un ID univoco e
crea un file nel quale verranno salvate le “variabili di sessione” e che ha per nome quello
stesso ID. Insieme alla risposta al client viene inviato un “cookie di sessione” che ha per
valore quell’ID.
In questo modo, ogni volta che un client presenterà una richiesta con quel cookie, il PHP
saprà in quale file sono contenute la variabili relative a quella sessione ripristinandole.
LE SESSIONI
Come usare le sessioni PHP
Le sessioni non sono automaticamente disponibili nei nostri script, vanno attivate. Il
comando per attivare una sessione è session_start(), da invocare prima di ogni output del
PHP.
in_array Controlla se un valore è nell'array, ad esempio:
FUNZIONI DEL PHP
explode Divide un testo in più array, basandosi su un parametro
Funzioni utente
PASSAGGIO PARAMENTRI PER DEFAULT
È possibile assegnare al parametro di una funzione un valore di default (predefinito), che
verrà utilizzato quando la funzione viene chiamata senza passare il parametro.
Esempio: La funzione seguente stampa il parametro passato, ma se non riceve nessun
valore stampa un valore predefinito
<?php
//definizione funzione con parametro formale di default
function chiama($nome = "nessuno")
{
echo "il mio nome è: ".$nome;
echo "<BR>";
return;
}
//chiamata senza parametro
chiama();
//chiamata con parametro
chiama("testo di prova");
?>
PASSAGGIO PARAMENTRI PER VALORE E RIFERIMENTO (O INDIRIZZO)
Passaggio per valore: La funzione non modifica i parametri passati
Passaggio per riferimento: la modifica dei parametri all'interno della funzione influisce
sui parametri passati dal codice chiamante.
Le funzioni possono
essere definite nel tag
<head> o nel <body>
$a=20 e $b=30
Dopo chiamata passaValore($a,$b)
$a=20 e $b=30
Nel PHP per passare i
parametri per riferimento
si usa il simbolo &
RESTITUZIONE DI UN VALORE DA PARTE DI UNA FUNZIONE
Vediamo adesso un esempio che fa uso del comando return. Vogliamo realizzare un
convertitore euro -> lire.
<?php
// 15 euro
$valuta = 15;
// chiamo la funzione converti. Questa volta dobbiamo usare una
// variabile per raccogliere il valore restituito dalla funzione!
$vecchio_conio = converti($valuta);
echo "$valuta euro equivalgono a $vecchio_conio lire";
// definizione della funzione "converti"
function converti($euro)
{
// effettuo la conversione
$lire = $euro * 1936.27;
// restituisco il valore calcolato
return $lire;
}
?>
La funzione converti() riceve un parametro (la
quantità di euro da convertire in lire) che viene
memorizzata nella variabile $euro. La prima
istruzione effettua la conversione vera e propria.
Per restituire il risultato calcolato viene usato il
comando return affiancato dalla variabile da
restituire $lire.
$vecchio_conio sarà la variabile che raccoglierà
il risultato restituito dalla funzione converti()
INCLUSIONE DI CODICE DA FILE ESTERNO
Le funzioni possono essere incluse da un file esterno con la funzione include(). In
questo esempio il file disegnatabella.inc, contenente la funzione disegnaTabella()
viene incluso nel file PHP DisegnaTab.php
I file .inc (include file) si
riferiscono a file di testo
che contengono funzioni.
Tuttavia include() può
richiamare anche file .php

PHP

  • 1.
  • 2.
    La conversione automaticao implicita dei tipi: il cast Il PHP effettua in maniera trasparente, ovvero senza una esplicita indicazione, delle conversioni di tipo ogni qualvolta deve effettuare una operazione su un tipo di dati diverso da quello atteso. Esempio: <?php echo '25' * '10'; ?> Abbiamo chiesto al PHP di mostrarci il risultato di una moltiplicazione tra due stringhe. Vediamo cosa succede:  il PHP deve risolvere l'espressione '25' * '10' (questa espressione sulle stringhe non ha senso) ;  poiché si tratta di un operatore algebrico (la moltiplicazione *), il PHP converte entrambe le stringhe ( '25' e '10' ) in numeri. Questa operazione di conversione di tipo (da tipo stringa a tipo numero) viene detta cast.  il PHP adesso può effettuare il prodotto tra i numeri (25 e 10) e mostrare il risultato 250; Ovviamente questa conversione può portare a risultati privi di significato: "casa" * "3" sarà uguale a 0 poiché la stringa "casa" non sottintende un valore numerico e perciò sarà convertita nel numero 0.
  • 3.
    Vediamo ora unesempio di conversione da numero a stringa: <?php echo 'un numero a caso: ' . 43; ?> In questo caso il numero 43 verrà convertito in stringa prima di essere accodato attraverso l'operatore "." (concatenazione di stringhe) che lavora solo su stringhe. l caso più interessante di conversione di tipo è quello che da come risultato il tipo booleano. Spesso capita che il PHP debba eseguire un'operazione e si aspetta che i dati su cui lavorare siano di tipo booleano (come nella condizione del costrutto IF) ma invece gli vengono forniti dati di altro tipo (interi, stringhe, array). PHP procederà quindi ad una conversione che seguirà queste regole.  Tutti i numeri sono convertiti in true tranne lo 0  Tutte le stringhe sono convertite in true tranne le stringhe vuote (" ") e quella "0"  Tutti gli array sono convertiti in true tranne quelli vuoti (senza elementi) Vediamo un esempio
  • 4.
    <?php $array = array(); //conversione implicita da array a booleano if($array) { echo 'l'array $array ha almeno un elemento <br>';} else { echo 'l'array $array è vuoto <br>';} $stringa = 'ciao'; // conversione implicita da stringa a booleano if($stringa) { echo 'la stringa $stringa vale ' , $stringa;} else {echo 'la stringa $stringa è vuota';} $numero = 123; // conversione implicita da numero a booleano if($numero) {echo 'la variabile $numero è diversa da 0';} else { echo 'la variabile $numero è uguale a 0';} ?>
  • 5.
    Funzioni Matematiche (alcunele trovate a pag 274 del libro) Elenco completo delle funzioni matematiche: http://php.net/manual/it/ref.math.php
  • 6.
    Il protocollo HTTPche sovrintende tutte le connessioni web non è in grado di tenere traccia di eventuali scelte o particolari dati trasmessi tra client e server. Per questa ragione in PHP è stato implementato un meccanismo di gestione delle sessioni, laddove per “sessione” si intendono tutte le interazioni avvenute tra browser e server fino alla chiusura del browser stesso. In questo modo si potrà tenere traccia di eventuali precedenti scelte fatte dall’utente come, ad esempio, i prodotti scelti in un carrello oppure l’essersi loggato in un’area riservata. Come funzionano le sessioni PHP Quando un client si connette al server per la prima volta, il PHP genera un ID univoco e crea un file nel quale verranno salvate le “variabili di sessione” e che ha per nome quello stesso ID. Insieme alla risposta al client viene inviato un “cookie di sessione” che ha per valore quell’ID. In questo modo, ogni volta che un client presenterà una richiesta con quel cookie, il PHP saprà in quale file sono contenute la variabili relative a quella sessione ripristinandole. LE SESSIONI
  • 7.
    Come usare lesessioni PHP Le sessioni non sono automaticamente disponibili nei nostri script, vanno attivate. Il comando per attivare una sessione è session_start(), da invocare prima di ogni output del PHP.
  • 8.
    in_array Controlla seun valore è nell'array, ad esempio: FUNZIONI DEL PHP explode Divide un testo in più array, basandosi su un parametro
  • 9.
    Funzioni utente PASSAGGIO PARAMENTRIPER DEFAULT È possibile assegnare al parametro di una funzione un valore di default (predefinito), che verrà utilizzato quando la funzione viene chiamata senza passare il parametro. Esempio: La funzione seguente stampa il parametro passato, ma se non riceve nessun valore stampa un valore predefinito <?php //definizione funzione con parametro formale di default function chiama($nome = "nessuno") { echo "il mio nome è: ".$nome; echo "<BR>"; return; } //chiamata senza parametro chiama(); //chiamata con parametro chiama("testo di prova"); ?>
  • 10.
    PASSAGGIO PARAMENTRI PERVALORE E RIFERIMENTO (O INDIRIZZO) Passaggio per valore: La funzione non modifica i parametri passati Passaggio per riferimento: la modifica dei parametri all'interno della funzione influisce sui parametri passati dal codice chiamante. Le funzioni possono essere definite nel tag <head> o nel <body> $a=20 e $b=30 Dopo chiamata passaValore($a,$b) $a=20 e $b=30 Nel PHP per passare i parametri per riferimento si usa il simbolo &
  • 11.
    RESTITUZIONE DI UNVALORE DA PARTE DI UNA FUNZIONE Vediamo adesso un esempio che fa uso del comando return. Vogliamo realizzare un convertitore euro -> lire. <?php // 15 euro $valuta = 15; // chiamo la funzione converti. Questa volta dobbiamo usare una // variabile per raccogliere il valore restituito dalla funzione! $vecchio_conio = converti($valuta); echo "$valuta euro equivalgono a $vecchio_conio lire"; // definizione della funzione "converti" function converti($euro) { // effettuo la conversione $lire = $euro * 1936.27; // restituisco il valore calcolato return $lire; } ?> La funzione converti() riceve un parametro (la quantità di euro da convertire in lire) che viene memorizzata nella variabile $euro. La prima istruzione effettua la conversione vera e propria. Per restituire il risultato calcolato viene usato il comando return affiancato dalla variabile da restituire $lire. $vecchio_conio sarà la variabile che raccoglierà il risultato restituito dalla funzione converti()
  • 12.
    INCLUSIONE DI CODICEDA FILE ESTERNO Le funzioni possono essere incluse da un file esterno con la funzione include(). In questo esempio il file disegnatabella.inc, contenente la funzione disegnaTabella() viene incluso nel file PHP DisegnaTab.php I file .inc (include file) si riferiscono a file di testo che contengono funzioni. Tuttavia include() può richiamare anche file .php