23. I namespace

Andrea Pastore 27/09/2020 0

Un namespace una collezione di nomi di entità, definite dal programmatore, omogeneamente usate in uno o più file sorgente. A partire da PHP 7 anche PHP supporta questo approccio, che ha lo scopo di evitare confusione ed equivoci nel caso siano necessarie molte entità con nomi simili, fornendo il modo di raggruppare i nomi per categorie.

Concettualmente un namespace è assimilabile alla struttura delle cartelle di un filesystem: dobbiamo dichiarare un’origine per il nostro namespace che corrisponde alla directory root, o al nome del disco su sistemi Windows, e possiamo inserire in maniera sequenziale una serie di suddivisioni che in questa similitudine rappresenterebbero le sottocartelle.

Vantaggi dei namespace

Il primo vantaggio è quello di organizzare il codice in modo da facilitare la manutenibilità, ad esempio tramite lo standard PSR-4;

non dobbiamo preoccuparci dei problemi relativi alle omonimie tra classi, ad esempio una classe con un nome molto comune come Connection non sarà più un problema.

 

Potrebbero interessarti anche...

Andrea Pastore 27/09/2020

13. Gestire gli header

Nel capitolo precedente abbiamo visto che i form inviano i dati ad un nuovo script che esegue delle azioni. Una volta terminata la sua esecuzione, però, lo script deve reindirizzare l’utente ad un’altra pagina. Questo può essere fatto gestendo gli header di pagina.

Gli header sono le informazioni di una pagina web che viene trasmessa dal server al browser. Vengono usati per far capire il tipo di dato che il browser si deve preparare a ricevere, per comunicare gli status code del protocollo HTTP oppure per il reindirizzamento. In questa prima fase del corso lo utilizzeremo principalmente per reindirizzare l’utente ad una nuova pagina dopo aver compilato un form. Per fare questo utilizzeremo il comando nel seguente modo:

header(“Location: pagina.php”);

Comunicare gli status http

Per comunicare uno status http si usa la seguente sintassi: “HTTP:/1.1 codice_stato frase”. Nell’esempio qui sotto lo abbiamo utilizzato per indicare che la pagina cercata ha generato un errore.

header("HTTP/1.1 500 Internal server error");

Specificare un tipo di file diverso

Gli header possono essere usati per specificare un determinato tipo di dati, ad esempio:

header("Content-type:application/pdf");

In questo caso stiamo comunicando al browser che il contenuto di questa pagina è un file pdf che deve essere scaricato.

Leggi tutto

Andrea Pastore 26/09/2020

9. Le funzioni in PHP

Spesso capita che dobbiamo usare un determinato pezzo di codice in più parti della nostra web application. Potremmo certamente ricopiare il codice ovunque ci serva, ma non è una buona idea: se dobbiamo cambiare quel codice dovremmo andarlo a modificare in tutti i punti in cui lo abbiamo scritto. Esiste un modo migliore per ottimizzare questo aspetto della programmazione: la creazione di funzioni.

Una funzione è un codice che può essere richiamato in altre parti del programma. In questo modo quando dovrà essere modificata dovremmo modficiare solo il codice contenuto nella funzione e non in tutti i punti in cui è stata chiamata. Per definire una funzione si deve usare la parola chiave function, ad esempio:

	function saluta() {

    echo "Ciao mondo!";

}

la funzione che abbiamo appena scritto stampa la scritta “Ciao mondo!”. Ovviamente il codice qui sopra definisce la fuzione, ma non la manda in esecuzione. Per eseguirla bisognerà richiamarla nel nostro codice scrivento:

	saluta();

Parametri di una funzione

una funzione può avere dei parametri passati in input, che vanno specificati nelle parentesi tonde. Vediamo un esempio:

	function saluta2($nome) {

    echo "Ciao $nome!";

}

Il parametro $nome può contenere qualsiasi valore, ad esempio posso chiamare la funzione in questo modo:

	saluta2("Mario");   

saluta2("Antonio");

Ho chiamato la funzione due volte, usando due nomi diversi, quindi PHP stamperà di volta in volta il nome che gli viene passato.

Nota: se la funzione non riceverà i parametri attesi (nel caso di saluta2 il parametro $nome) darà un errore.

Parametri preimpostati

È possibile assegnare un valore predefinito ai parametri. Vediamo ad esempio questa funzione:

	function saluta3($nome = “Mario”) {

    echo "Ciao $nome!";

}

Questa funzione può essere utilizzata come la funzione saluta2 vista sopra, ovvero:

	saluta3(“Antonio”);

ma può anche essere utilizzata senza parametri:

	saluta3();

In questo caso la funzione assegna alla variabile $nome il valore di default stabilito al momento della sua creazione.

È possibile anche avere un misto di parametri preimpostati e non. Ad esempio la funzione definita qui di seguito:

	function nuovaFunzione($parametro1, $parametro2 = “test”) {

echo “$parametro1 $parametro2”;

}

prende in input due parametri, di cui uno è preimpostato. Significa che questa funzione può essere chiamata in questo modo:

	nuovaFunzione(“valore1”, “valore2”);

oppure

	nuovaFunzione(“valore1”);

In questo esempio la funzione ha un solo parametro preimpostato, quindi se provassimo a richiamarla in questo modo:

	nuovaFunzione();

otterremmo un errore.

Inserire i tipi di dato

nei parametri in input possiamo specificare il tipo di dato, per rendere più sicuro il codice. Consideriamo la funzione:

	function cubo($numero) {

return $numero * $numero * numero;

}

se passiamo per errore un dato errato, ad esempio scriviamo:

	cubo(“cento”);

la funzione restituirà dei warning, ma lo script continuerà la sua esecuzione creando errori a cascata. Se invece modifichiamo la firma della funzione scrivendo:

	function cubo(int $numero) {

return $numero * $numero * numero;

}

in questo caso al momento di eseguire la funzione verrà generato un fatal error, che bloccherà l’esecuzione dello script.

Funzioni predefinite

PHP dispone di un gran numero di funzioni predefinite, che consentono di eseguire operazioni comuni. Sono tantissime, in questa tabella vediamo le principali.

Nome funzione  Utilità 
 strlen restituisce la lunghezza di una stringa

Esempio:
strlen($stringa)
 str_replace Sostituisce una sottostringa con un altro valore all’interno di una stringa

Esempio:
str_replace($trova,$sostituisciCon,$stringa)
 substr Restituisce una porzione della stringa passata in input. Prende in input, oltre alla stringa, la posizione di partenza e il numero di elementi da inserire nella sottostringa.

Esempio:
substr($stringa,0,20);
// restituisce i primi venti caratteri della variabile $stringa
 strtolower Restituisce la stringa con tutte le lettere in minuscolo

Esempio:
strtolower($stringa);
 strtoupper Restituisce la stringa con tutte le lettere in maiuscolo

Esempio:
strtoupper($stringa);
 htmlspecialchars Funzione che restituisce una stringa in cui i caratteri speciali della stringa passata in input sono convertiti in entità HTML.

Esempio:
htmlspecialchars(“”);

L’output di questo comando sarà:



I simboli “<” e “>” sono stati trasformati in entià HTML, rispettivamente in < e >

Questo fa si che il risultato visivo per l’utente sia lo stesso, ma l’interprete JavaScript non eseguirà questo codice in quanto non è racchiuso dal tag

Viene utilizzata quando dobbiamo stampare del codice in una pagina web (ad esempio a scopo didattico) oppure per rendere sicure delle stringhe passate in input (sebbene la soluzione ideale sia la funzione filter_input).
 exit Termina l’esecuzione del programma, tutto il codice che si trova dopo la chiamata di questa funzione non verrà eseguito.

Esempio:
exit();
 isset Consente di verificare se una variabile è stata creata o meno. Restituisce true se la variabile esiste, false altrimenti. Viene usata tipicamente negli if, in modo da fare delle azioni quando

Esempio:
if(isset($variabile)) {
      // se la variabile esiste esegue un certo codice
}
else {
      // se la variabile non esiste esegue altre azioni
}
 is_numeric Restituisce true se il valore passato in input è un numero, viene usata tipicamente all’interno di un if.

Esempio:
if(is_numeric($var)) {
      // eseguo il codice dell’if
}
 is_string Restituisce true se il valore passato in input è un numero, viene usata tipicamente all’interno di un if.

Esempio:
if(is_string($var)) {
      // eseguo il codice
}
 header Funzione per gestire gli header, viene usata tipicamente per reindirizzare l’utente in qualche altra pagina del nostro sito.

Esempio:
header(“Location: index.php”);
Leggi tutto

Andrea Pastore 27/09/2020

16. Le sessioni

Le sessioni sono un modo che ha il PHP per ricordare dei valori da una pagina ad un’altra. Vediamo un esempio:

	session_start();

$_SESSION[“nome”] = “Mario”;

Con questo codice ho creato una variabile di sessione dove memorizzo che nome = Mario. Quindi, quando nelle altre pagine PHP faremo riferimento a quella variabile, riceveremo il valore Mario. Ad esempio supponiamo di voler stampare la variabile di sessione nome creata sopra. Scriveremo:

	session_start();

echo $_SESSION[“nome”];

session_start() e session_destroy()

Quando vogliamo usare le sessioni in una pagina PHP dobbiamo utilizzare la funzione session_start(). Se nei due esempi precedenti togliessimo la session_start il codice genererà un errore, perché la variabile globale $_SESSION non è visibile.

Un esempio molto comune: lo script per il login

Supponiamo che l’utente abbia effettuato il login ad un portale web: ha inserito le credenziali, il nostro codice PHP ha fatto una query e ha appurato che l’utente esiste. Per fare in modo che PHP si ricordi che l’utente ha già effettuato il login bisogna usare questo codice:

	session_start();

$_SESSION[“nomeSessione”]  = “valore a piacere”;

nelle pagine in cui vogliamo controllare che una determinata sessione sia presente, scriveremo un codice che, se la sessione non esiste l’utente viene rediretto in un’altra pagina:

	session_start();

if(!isset($_SESSION["idUtente"])) {

header("Location: accessonegato.php");

}

Eliminare una sessione

Quando una sessione non è più necessaria può essere eliminata con la funzione unset() vista anche per gli array.

	unset($_SESSION[“nomeSessione”]);

Se dobbiamo eliminare tutte le sessioni, ad esempio quando un utente ha effettuato il logout, possiamo usare session_destroy(). Prima di invocare session_destroy() bisogna invocare session_start(), vediamo un esempio qui sotto:

    session_start();	

    session_destroy();

    header("Location: index.php");  

l’ultima riga di codice serve per effettuare un redirect ad un’altra pagina, cosa da fare nella stragrande maggioranza dei casi dopo che un utente ha effettuato un logout.

Leggi tutto

Cerca...