PHP
Questa pagina contiene il testo delle lezioni legate alla materia generale, per una più agevole lettura necessita di essere divisa in lezioni.
Per una lista completa delle materie da suddividere in lezioni, consulta la relativa categoria.
PHP | |
---|---|
Autore | PHP Group |
Data di origine | 8 giugno 1995 |
Ultima versione | 8.4.0 RC4 (7 novembre 2024) e 8.4.1 (21 novembre 2024) |
Utilizzo | Applicazioni web lato server |
Paradigmi | Imperativo, funzionale, orientato agli oggetti, procedurale, riflessione |
Tipizzazione | Debole |
Estensioni comuni | php e phar |
Implementazione di riferimento | |
Implementazione | Interprete |
Sistema operativo | Multipiattaforma |
Licenza | Licenza PHP |
Sito web | www.php.net |
Introduzione
modificaQuesta lezione presuppone conoscenze su principi generali della programmazione come il concetto di variabile, di metodo o funzione, cicli while
o for
, ecc.
Cos'è PHP
modificaPHP (acronimo ricorsivo di: PHP: Hypertext Preprocessor ovvero preprocessore di ipertesti) è un linguaggio di programmazione interpretato, concepito per generare pagine web dinamiche. L'interprete di PHP è un software libero rilasciato sotto la licenza PHP.[1]
MediaWiki, la piattaforma su cui si basano molti progetti wiki fra i quali Wikipedia e Wikiversità, è un esempio di software scritto in PHP.
La sintassi del PHP è simile al C e al Perl.
Dove testare PHP
modificaPer utilizzare PHP al meglio è consigliabile un ambiente LAMP, ovvero composto dalle seguenti:
- Sistema operativo GNU/Linux
- Server web Apache
- Gestore di database MySQL
- PHP
Per installare una piattaforma di questo tipo si può seguire questa guida: PHP/Installazione (scegliere il capitolo corretto a seconda del sistema che si utilizza, come per esempio PHP/Installazione/Linux).
Concetti di base
modificaIntegrare PHP nelle pagine
modificaUna pagina PHP solitamente ha estensione .php
. Tutto ciò che sta in una pagina PHP è sempre mostrato in output, soltanto ciò che sta fra i tag di apertura <?php
e ?>
è prima interpretato dal motore PHP. Ciò è molto pratico per creare una completa pagina HTML e lanciare comandi PHP solo dove necessario. Esempio:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<?php echo "Hello, World!"; ?>
</body>
</html>
Ogni comando PHP termina con punto e virgola ;
. Se il comando è l'ultimo, il punto e virgola può essere omesso (nell'esempio sopra può essere omesso). Anche il tag di chiusura ?>
può essere omesso, se si trova alla fine del file. Di fatto, tale omissione è spesso preferibile, per evitare che siano accidentalmente presenti ulteriori caratteri indesiderati (come uno spazio).
Commenti
modificaPer rendere più leggibile il codice si usano i commenti. I commenti non vengono elaborati dall'interprete PHP. Vi sono 3 diversi stili di commenti:
<?php
// Commento tipo C
/*
* Commento multi-linea in stile C++
* Il secondo e terzo asterisco sono solo a fine estetico.
*/
# Commento in stile Perl a riga singola (collocato a inizio riga)
Stampare a video
modificaAnteposto il concetto che ogni porzione di testo fuori dai tag <?php ?>
viene mostrata a video, al contrario ogni porzione di codice all'interno dei tag <?php ?>
non viene mostrata a video ma bensì interpretata.
Vi sono per cui determinate istruzioni per mostrare a video un valore da PHP. Un esempio è l'istruzione echo
:
<?php echo 1+2+3; ?>
Output: 6
.
Variabili
modificaLa gestione delle variabili in PHP è particolarmente "potente" rispetto a molti altri linguaggi di programmazione similari, in quanto una caratteristica del PHP è il non essere un linguaggio a tipizzazione forte.
Vantaggi tipici
- In PHP per instanziare una variabile è sufficiente assegnarle un valore;
- In PHP la dichiarazione del tipo di variabile è implicita durante l'assegnazione di un valore;
- In PHP una variabile può essere rimossa anche nel corso dello script (tramite l'istruzione
unset($variabile)
); - In PHP il tipo di una variabile può variare nel corso dello script;
Caratteristiche tecniche
- In PHP le variabili sono sempre precedute dal simbolo del dollaro (esempio:
$variabile
); - In PHP le variabili sono case sensitive (c'è differenza tra la variabile
$wiki
e$WIKI
);
Esempio
<?php
$variabile = 20; // Inizializzazione di una variabile intera
echo $variabile; // Mostro a video
$variabile = 'W Wikiversità!'; // Inizializzazione una stringa
echo $variabile; // Mostro a video
$variabile = 2.3; // Inizializzazione una variabile a virgola mobile
echo $variabile; // Mostro a video
Output: 20W Wikiversità2.3
È divertente notare che è stata usata la stessa variabile per contenere uno dopo l'altro ben tre tipi diversi di variabile.
Funzioni di controllo utili
isset($variabile)
Per controllare se una variabile esiste;[2]empty($variabile)
Per controllare se una variabile è considerata vuota (ovvero se la variabile non esiste o se assume valori di default comefalse
,0
, stringa vuota (''),null
ecc.);[3]
Funzioni utili per il debug
var_dump($variabile)
Mostra a video tutte le informazioni reperibili da una variabile;[4]print_r($variabile)
Simile adebug
, dà un risultato più leggibile "agli umani";[5]
Dinamicità
modificaPeculiarità da ignorare nell'uso comune di PHP, ma che dà l'idea della sua dinamicità, è la possibilità di richiamare una variabile attraverso il suo nome in formato di stringa. Per fare ciò si utilizza il costrutto ${'nome_variabile'}
. Questo concetto si chiama variabili variabili[6]. Esempio:
<?php
$frase = 'A video vedrò solo questa frase.';
$nomevariabile = 'frase';
echo ${$nomevariabile};
Output: A video vedrò solo questa frase.
Per capire meglio l'esempio ipotizziamo di essere l'interprete di PHP e osservare l'ultima riga, eseguendo una pseudo elaborazione passo-passo:
echo ${$nomevariabile}
echo ${'frase'}
(Questo perché$nomevariabile
contiene la stringa'frase'
)echo $frase
- Output:
A video vedrò solo questa frase
Questo argomento si può approfondire notevolmente sul manuale ufficiale.[6][7]
Stringhe
modificaUna stringa, ovvero un insieme di caratteri, si istanzia in due modi abbastanza interscambiabili: con apici doppi ("Hello, World!"
) o singoli ('Hello, World!'
). Quindi, a differenza del linguaggio C, la variabile $a = 'A'
non è di tipo 'char', ma semplicemente una stringa di lunghezza 1.
Con gli apici singoli si ottiene una stringa "così com'è". Gli apici doppi sono utili per interpretare al loro interno altre variabili o particolari caratteri di stampa (per esempio nomi di variabili inizianti con il dollaro ($
) oppure caratteri speciali come la tabulazione \t
).
L'operazione tipica delle stringhe è la concatenazione, è ciò tipicamente si esegue con il punto (.
).
Esempio di composizione della frase "Wikipedia è meravigliosa" in due modi: concatenandola con apici singoli e doppi:
<?php
$uno = 'Wikipedia';
$due = 'è';
$tre = 'meravigliosa';
echo $uno . ' ' . $due . ' ' . $tre;
Output: Wikipedia è meravigliosa
.
Altro esempio:
<?php
$uno = 'Wikipedia';
$due = 'è';
$tre = 'meravigliosa';
echo "$uno $due $tre";
Output: Wikipedia è meravigliosa
.
Array
modificaPer approfondire questo argomento, consulta la pagina PHP/Array. |
Questo argomento tratta di variabili multidimensione. Se non hai esperienza con altri linguaggi di programmazione ti consigliamo di leggere prima gli operatori e le strutture di controllo.
PHP gestisce gli array come delle mappe associative, ovvero come un elenco di chiave => valore. Gli array in PHP possono perciò essere usati sia come un comune array ma anche come una lista (vettore), una stack, una coda, e molto altro. Inoltre un qualsiasi elemento dell'array può a sua volta contenere altri array multidimensionali[8] e tutti gli elementi dell'array o dei sotto-array possono essere di tipo diverso, lasciando così la possibilità di creare strutture dati molto complesse (ricordando che però ci sono le classi, per questo genere di strutture). Ciò fa degli array una vera peculiarità del PHP.
Esempio di un array:
<?php
// da PHP 5.3 si possono usare le quadre. Prima sarebbe stato array(1, 3, 5, 7)
$primi = [1, 3, 5, 7];
// Appendo un altro elemento in coda
$primi[] = "Non dire gatto";
print_r( $primi );
L'output di print_r
evidenzia bene la mappa chiave => valore che si viene a creare:
Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 7 [4] => "Non dire gatto" )
Il costrutto foreach
serve per attraversare un array quando non è possibile farlo con altri mezzi, dato che la numerazione degli indici ("chiavi") non sono sempre numeriche, ordinate e continue.
Esempio:
<?php
$abitanti = [
'TO' => 908551,
'MI' => 1315791,
'RO' => 2753000
];
$somma = 0;
foreach($abitanti as $chiave => $valore) {
echo "La città con targa $chiave ha circa $valore abitanti. <br />";
$somma += $valore;
}
echo "...e in tutto ci sono $somma abitanti!";
Output:
La città TO ha circa 908551 abitanti. La città MI ha circa 1315791 abitanti. La città RO ha circa 2753000 abitanti. ... e in tutto ci sono 4977342 abitanti!
Gli utilizzi degli array e di tutte le relative funzioni e costrutti (compreso il foreach
) sono argomenti da approfondire sul manuale ufficiale[8] o sulla sezione dedicata (da ampliare): /Array.
Array predefiniti
modificaÈ opportuno sapere che vi sono una serie di array predefiniti[9] da PHP è che non bisognerebbe mai sovrascrivere.
Alcuni fra i più utilizzati:
$_SERVER
[10] - Informazioni sull'ambiente di sviluppo e sul server$_GET
[11] - Array associativo di parametri HTTP GET$_POST
[12] - Array associativo di parametri HTTP POST$_FILES
[13] - Array associativo di file caricati in upload$_SESSION
[14] - Array associativo di variabili di sessione$_COOKIE
[15] - Array associativo dei cookie
Costanti
modificaUna costante è un contenitore (come le variabili) di un dato semplice e non può essere ri-assegnata.Sono sempre di visibilità globale e per convenzione si scrivono in maiuscolo. Per l'accesso non si usa il $
.
Una costante si dichiara tramite il costrutto define
[16]:
<?php
define('NOME_SITO', 'Wikipedia');
echo NOME_SITO;
Output: valore
.
Una costante di classe si dichiara tramite const
:[17]
<?php
class MiaClasse {
const VERSIONE = 34;
public static getVersione() {
return self::VERSIONE; // Si usa self per l'accesso a proprietà statiche
}
}
// Accesso in modo statico
echo MiaClasse::VERSIONE;
Output: 34
.
È bene sapere che le costanti di classe sono sempre implicitamente dichiarate come statiche (static
).
Esempio di utilizzo di costanti e variabili:
<?php
define('A', 17);
define('B', 16);
define('FRASE_FATTA', 'Il prodotto è: ');
$prodotto = A * B;
echo FRASE_FATTA . $prodotto; // Ricordiamo che il punto (.) concatena due variabili
Output: Il prodotto è: 272
.
Costanti magiche
modificaIn PHP esistono costanti predefinite (nota: non è possibile dichiarare costanti con lo stesso nome se esistono già), alcune delle quali si chiamano costanti magiche[18] poiché nella teoria sono vere e proprie costanti (poiché non possiamo assegnar loro alcun valore) ma in realtà il loro valore può variare "da solo" nel corso dello script per cause esterne, appunto, quasi magicamente:
Costanti magiche più note:
__LINE__
Contiene il numero di riga dove la costante è richiamata, ad ogni riga la costante varia__FILE__
Contiene il nome del file dove si sta eseguendo il codice PHP attualmente (ad ogni inclusione la costante cambia)__DIR__
Contiene il nome della cartella dove si sta eseguendo il file in PHP__FUNCTION__
Richiamata dentro ad una funzione, questa costante contiene il nome della funzione stessa__CLASS__
Richiamata dentro ad una classe, questa costante contiene il nome della classe stessa
Operatori
modificaOperatori matematici
modificaGli operatori matematici utilizzabili sono:
$a + $b
- Addizione
$a - $b
- Sottrazione
$a * $b
- Moltiplicazione
$a / $b
- Divisione
$a % $b
- Modulo (resto)
Un esempio:
<?php
$a = 5;
$b = 3;
$risultato = $a % $b;
echo $risultato;
Output: 2
.
(Il resto della divisione fra 5 e 3, è infatti 2.)
Operatori di confronto
modificaGli operatori di confronto tra variabili sono:
$a == $b
- Se contengono gli stessi dati (per esempio il numero 5 e la stringa "5" sarebbero uguali). Vedi le note importanti.
$a === $b
- Identici: se contengono gli stessi dati e sono dello stesso tipo.
$a != $b
- Se $a è diverso da $b.
$a <> $b
- Se $a è diverso da $b.
$a !== $b
- Non identici: se $a è diverso da $b o se essi non sono dello stesso tipo.
$a < $b
- Se $a è minore di $b.
$a > $b
- Se $a è maggiore di $b.
$a <= $b
- Se $a è minore o uguale di $b.
$a >= $b
- Se $a è maggiore o uguale di $b.
È però importante sottolineare una nota spiacevole riguardante l'operatore di confronto ==
, tramite questo esempio:
Note importanti sull'operatore " == "
modificaCi sono molte stringhe il cui valore, per diverse versioni di PHP, è identico anche se sono visivamente differenti. Per questo, se si ha a che fare con due interi, con due stringhe, o con due variabili dello stesso tipo, sarebbe sempre meglio usare ===
per evitare di essere vittima di risultati imprevedibili dovuti a male-conversioni da parte di PHP dovute all'utilizzo di ==
.
Esempio:
<?php
var_dump('0010e2' == '1e3'); // vero
var_dump('0x1234Ab' == '1193131'); // vero
var_dump('0xABCdef' == ' 0xABCdef'); // vero
Strutture di controllo
modificaif
modifica<?php
$a = 5;
$b = 4;
if( $a !== $b ) {
echo "Il numero $a è diverso da $b";
}
Output: Il numero 5 è diverso da 4
.
if else
modifica<?php
$a = 5;
$b = 4;
if( $a !== $b ) {
echo "Il numero $a è diverso da $b";
} else {
echo "Il numero $a è uguale a $b";
}
Output: Il numero 5 è diverso da 4
.
if annidati
modifica<?php
$a = 5;
if( $a === 0 ) {
echo "Il numero è zero";
} elseif( $a % 22 === 1 ) {
echo "Il numero $a è pari";
} else {
echo "Il numero $b è dispari";
}
Output: Il numero 5 è dispari
switch
modifica<?php
$motto = 1;
switch( $motto ) {
case 1:
echo 'Un due tre, è brutto far da sè';
break;
case 'quattro':
echo 'Conto fino a quattro, nutrite quel bel gatto';
break;
default:
echo 'Spiacente ma questo motto non è previsto';
}
Output: Un due tre, è brutto far da sè
.
Se nessun case
è verificato entra in azione il default
(se usato).
È importante inserire un break
al termine di ogni case
se si vuole che venga eseguito soltanto il codice all'interno del primo case
verificato.
Operatore ternario
modificaL'operatore ternario è un particolare costrutto if-else
molto potente che segue questa sintassi:
(CONDIZIONE) ? VALORE : VALORE_ALTRIMENTI
Esempio:
<?php
$anno = 2015;
$risposta = ( $anno < 2000 ) ? "Sei nato prima dell'anno 2000" : "Benvenuto nel nuovo millennio";
echo $risposta;
Output: Benvenuto nel nuovo millennio
.
Funzioni
modificaLe funzioni in PHP possono avere un mix di parametri opzionali con valori predefiniti o parametri obbligatori (per questo motivo il concetto di overloading in PHP è perfettamente inutile).
Esempio di funzione con un parametro obbligatorio e uno opzionale:
<?php
function apprezza( $soggetto, $apprezzamento = "libera" ) {
return "Lasciatemi dire che $soggetto è $apprezzamento poiché contribuire è facile!";
}
echo apprezza("Wikipedia"); // Output: Lasciatemi dire che Wikipedia è libera poiché contribuire è facile!
echo apprezza("Wikidizionario", "meraviglioso"); // Output: Lasciatemi dire che Wikidizionario è meraviglioso poiché contribuire è facile!
Qualunque variabile di qualunque tipo creata dentro alla funzione diventa locale.
Per specificare variabili globali dentro alla funzione si usa global $variabile
. Esempio:
<?php
function esperimento() {
global $a;
$a = "tre";
$b = "quattro";
echo "Durante: $a $b";
}
$a = "uno";
$b = "due";
echo "Prima: $a $b"; // uno due
esperimento(); // tre quattro
echo "Dopo: $a $b"; // tre due
Il risultato sarà: Prima uno due Durante tre quattro Dopo tre due
.
Funzioni anonime
modificaÈ possibile utilizzare funzioni anonime da PHP 5.3:[19]
Esempio utilizzando array_map()
, che richiede come primo parametro una funzione callback:[20]:
$fruits = [1, 2, 3, 4, 5];
// Elevo al quadrato
$fruits = array_map(
function($a) {
return $a * $a;
},
$fruits
);
// Stampo
echo implode(" ... ", $fruits);
Output: 1 ... 4 ... 9 ... 16 ... 25
Cicli
modificafor
modificaSintassi:
<?php
for($i = 0; $i<10; $i++) {
// Do something
}
Altro esempio:
<?php
$array = ["la volpe marrone", "e veloce", "saltò sopra", "al cane stanco"]; // Dichiazione di un array di quattro elementi
// Numero di elementi
$n = count($array);
for ($i = 0; $i < $n; $i++) {
echo "Elemento $i: {$array[$i]} \n";
}
Output:
Elemento 0: la volpe marrone Elemento 1: e veloce Elemento 2: saltò sopra Elemento 3: al cane stanco
foreach
modificaIl ciclo foreach
cicla dall'inizio alla fine la mappa chiave => valore di un array.
Esempio:
<?php
$pezzi = ["la volpe marrone", "e veloce", "saltò sopra", "al cane stanco"];
foreach($pezzi as $key => $value) {
echo "$key - $value \n";
}
Output:
0 - la volpe marrone 1 - e veloce 2 - saltò sopra 3 - al cane stanco
O se non mi interessano le chiavi:
<?php
foreach($pezzi as $value) {
echo "$value -";
}
Output: la volpe marrone - e veloce - saltò sopra - al cane stanco -
.
while
modificaEsegue il codice al suo interno fintanto che una condizione viene soddisfatta:
<?php
$a = 1;
while( $a < 10 ) {
echo $a++;
}
Output: 123456789
.
Nota che in certi casi il ciclo potrebbe non essere eseguito nemmeno una volta.
do while
modificaSimile al while
, ma in questo caso si è sicuri di eseguire il ciclo almeno la prima volta:
<?php
$a = 2;
do {
echo "Ecco il ciclo... ";
} while( $a >= 1 ) {
echo "e sono positivo ";
$a--;
}
Output: Ecco il ciclo... e sono positivo e sono positivo
.
Variabili globali
modificaGET
modificaUna delle variabili globali di PHP è $_GET['nome']
e restituisce il valore di una variabile passata attraverso una classica richiesta HTTP GET.
Supponiamo di avere una pagina chiamata index.php
e di caricarla tramite alcuni parametri HTTP GET:
http://example.org/index.php?esempio=67&pippo=163
A questa pagina passiamo due variabili: esempio
, con valore uguale a "67"
, e pippo
, con valore uguale a "163"
. Per far utilizzare questi dati il codice di index.php sarà più o meno questo:
<?php
$esempio = $_GET['esempio'];
$pippo = $_GET['pippo'];
// Faccio la somma fra le due variabili
// In realtà $_GET passa sempre delle stringhe, ma il PHP si arrangia
$somma = $esempio + $pippo;
// Print è in stile C
print("La somma è %d", $somma);
Output: La somma è: 230
.
POST
modificaUn'altra delle variabili globali di PHP è $_POST['nome']
e restituisce il valore di una variabile passata attraverso il metodo HTTP POST (da un form di login ad esempio).
Per inviare dei dati attraverso POST il codice sarà simile a questo:
<!DOCTYPE html>
<html>
<body>
<?php
if( isset( $_POST['esempio'], $_POST['pippo'] ) ) {
printf(
"Pagina caricata con questi parametri POST: %s %s \n",
htmlentities( $_POST['esempio'] ), // MAI stampare a video una stringa senza rimuovere eventuali caratteri pericolosi
htmlentities( $_POST['esempio'] )
);
} else {
echo "Completa il modulo.";
}
?>
<form action="dati.php" method="post">
<input type="text" name="esempio" />
<input type="text" name="pippo" />
<button type="submit">Invia</button>
</form>
</body>
</html>
Cookie
modificaUn cookie è una porzione di stringa che, dal sito, è possibile richiedere di far memorizzare sul browser. Se il browser ha i cookie abilitati, accetterà il cookie e lo ri-spedirà alla pagina ad ogni prossima richiesta (fino allo scadere di un certo timeout, dopo il quale il cookie sarà eliminato).
Ma vediamo subito come settare ed eliminare i cookies. Prima di tutto c'è da ricordarsi che i cookies fanno parte degli header http e che quindi devono essere inviati prima di qualsiasi output html. Questa è in dettaglio la funzione per settare i cookies in PHP:
<?php
setcookie("nomecookie", "valore", time() + 3600);
Il terzo parametro indica il tempo di scadenza in secondi.
La cancellazione di cookie avviene in modo identico, invalidando il tempo di scadenza:
<?php
setcookie("nomecookie", "valore", time() - 3600);
Questa funzione cancella un cookie immediatamente visto che il suo tempo di scadenza è impostato ad un'ora fa.
Una volta impostati dei cookie con dei valori, questi ultimi possono essere richiamati in modo analogo a GET e POST in qualsiasi pagina attraverso $_COOKIE['nomecookie']
.
Sessioni
modificaLa sessione è un modo per evitare di toccare i cookie a mano. All'utente viene assegnato un identificatore di sessione che permette a PHP di sapere a quale sessione appartiene. I valori di una sessione sono scritti su file, e dopo un certo periodo di tempo di inattività sono cancellati.
Esempio in pagina-1.php
:
<?php
session_start();
$_SESSION['nome'] = "Mario";
Esempio in pagina-2.php
:
<?php
session_start();
if( ! empty( $_SESSION['nome'] ) ) {
printf(
"Ciao %s!",
htmlentities( $_SESSION['nome'] ), // MAI stampare a video una stringa senza rimuovere eventuali caratteri pericolosi
);
} else {
echo "Torna alla pagina-1.php, così istanzi una sessione!";
}
Output se ho visitato la pagina-1.php
e in seguito la pagina-2.php
: Ciao Mario!
.
Se vogliamo eliminare la sessione si può usare session_destroy()
.
Database
modificaMySQLi
modificaPHP si interfaccia facilmente a molti tipi di database. Il più famoso è sicuramente MySQL o il suo fork MariaDB.
Esempio:
<?php
$mysqli = new mysqli("localhost", "username", "password", "nome_database") or die("Errore durante la connessione al database");
if($mysqli->connect_errno) {
die( "Errore: {$mysqli->connect_error}" );
}
$mysqli->query("UPDATE users SET user_enable = '1' WHERE user_ID = '69'");
$mysqli->close();
File
modificaFunzioni sulle stringhe
modificaFunzioni sugli array
modificaFunzioni sui file
modificaNote
modifica- ↑ Storia del PHP e progetti correlati, it.php.net. URL consultato il 05-03-2016.
- ↑ Manuale PHP - isset, it1.php.net. URL consultato il 05-03-2016.
- ↑ empty, php.net. URL consultato il 05-03-2016.
- ↑ var_dump, php.net. URL consultato il 05-03-2016.
- ↑ print_r, php.net. URL consultato il 05-03-2016.
- ↑ 6,0 6,1 (EN) Variable variables, php.net. URL consultato il 05-03-2016.
- ↑ (EN) Variable scope, php.net. URL consultato il 05-03-2016.
- ↑ 8,0 8,1 (EN) Array, php.net. URL consultato il 05-03-2016.
- ↑ (EN) Reserved variables, php.net. URL consultato il 05-03-2016.
- ↑ (EN) $_SERVER, php.net. URL consultato il 05-03-2016.
- ↑ (EN) $_GET, php.net. URL consultato il 05-03-2016.
- ↑ (EN) $_POST, php.net. URL consultato il 05-03-2016.
- ↑ (EN) $_FILES, php.net. URL consultato il 05-03-2016.
- ↑ (EN) $_SESSION, php.net. URL consultato il 05-03-2016.
- ↑ (EN) $_COOKIE, php.net. URL consultato il 05-03-2016.
- ↑ (EN) define, php.net. URL consultato il 05-03-2016.
- ↑ Costanti di classe, php.net. URL consultato il 05-03-2016.
- ↑ Costanti magiche, php.net. URL consultato il 05-03-2016.
- ↑ Funzioni anonime, php.net. URL consultato il 05-03-2016.
- ↑ Array Map, php.net. URL consultato il 05-03-2016.