PHP

Da Wikiversità, l'apprendimento libero.
Jump to navigation Jump to search
lezione
PHP
Tipo di risorsa Tipo: lezione
Materia di appartenenza Materia: Linguaggi di programmazione web




PHP
PHP-logo.svg
Autore PHP Group
Data di origine 8 giugno 1995
Ultima versione 7.3.1 (10 gennaio 2019)
Utilizzo Applicazioni web lato server
Paradigmi Imperativo, funzionale, orientato agli oggetti, procedurale, riflessione
Tipizzazione Debole
Estensioni comuni php, phtml, php4, php3, php5, phps e phar
Implementazione di riferimento
Implementazione Interprete
Sistema operativo Multipiattaforma
Licenza Licenza PHP
Sito web secure.php.net

Introduzione[modifica]

Questa lezione presuppone conoscenze su principi generali della programmazione come il concetto di variabile, di metodo o funzione, cicli while o for, ecc.

Cos'è PHP[modifica]

PHP (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[modifica]

Per 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[modifica]

Integrare PHP nelle pagine[modifica]

Una 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[modifica]

Per 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[modifica]

Anteposto 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[modifica]

La 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 come false, 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 a debug, dà un risultato più leggibile "agli umani";[5]

Dinamicità[modifica]

Peculiarità 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:

  1. echo ${$nomevariabile}
  2. echo ${'frase'} (Questo perché $nomevariabile contiene la stringa 'frase')
  3. echo $frase
  4. Output: A video vedrò solo questa frase

Questo argomento si può approfondire notevolmente sul manuale ufficiale.[6][7]

Stringhe[modifica]

Una 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[modifica]

Exquisite-kfind.png Per 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[modifica]

Una 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[modifica]

In 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[modifica]

Operatori matematici[modifica]

Gli 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[modifica]

Gli 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 " == "[modifica]

Ci 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[modifica]

if[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 % 2 === 0 ) {
	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[modifica]

L'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[modifica]

Le 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[modifica]

for[modifica]

Sintassi:

<?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[modifica]

Il 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[modifica]

Esegue 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[modifica]

Simile 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[modifica]

GET[modifica]

Una 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[modifica]

Un'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[modifica]

Un 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[modifica]

La 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[modifica]

MySQLi[modifica]

PHP 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[modifica]

Funzioni sulle stringhe[modifica]

Funzioni sugli array[modifica]

Funzioni sui file[modifica]

Note[modifica]

  1. Storia del PHP e progetti correlati, it.php.net. URL consultato il 05-03-2016.
  2. Manuale PHP - isset, it1.php.net. URL consultato il 05-03-2016.
  3. empty, php.net. URL consultato il 05-03-2016.
  4. var_dump, php.net. URL consultato il 05-03-2016.
  5. print_r, php.net. URL consultato il 05-03-2016.
  6. 6,0 6,1 (EN) Variable variables, php.net. URL consultato il 05-03-2016.
  7. (EN) Variable scope, php.net. URL consultato il 05-03-2016.
  8. 8,0 8,1 (EN) Array, php.net. URL consultato il 05-03-2016.
  9. (EN) Reserved variables, php.net. URL consultato il 05-03-2016.
  10. (EN) $_SERVER, php.net. URL consultato il 05-03-2016.
  11. (EN) $_GET, php.net. URL consultato il 05-03-2016.
  12. (EN) $_POST, php.net. URL consultato il 05-03-2016.
  13. (EN) $_FILES, php.net. URL consultato il 05-03-2016.
  14. (EN) $_SESSION, php.net. URL consultato il 05-03-2016.
  15. (EN) $_COOKIE, php.net. URL consultato il 05-03-2016.
  16. (EN) define, php.net. URL consultato il 05-03-2016.
  17. Costanti di classe, php.net. URL consultato il 05-03-2016.
  18. Costanti magiche, php.net. URL consultato il 05-03-2016.
  19. Funzioni anonime, php.net. URL consultato il 05-03-2016.
  20. Array Map, php.net. URL consultato il 05-03-2016.