PHP: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Etichette: Modifica visuale Modifica da mobile Modifica da web per mobile
Garak (discussione | contributi)
migliora codice
Riga 122:
Esempio di composizione della frase "Wikipedia è meravigliosa" in due modi: usando gli apici singoli e doppi:
<syntaxhighlight lang="php">
<?php
$uno = 'Wikipedia';
$due = 'è';
Line 140 ⟶ 141:
<syntaxhighlight lang="php">
<?php
$residenti = array([
'Torino' => 908551,
'Milano' => 1315791,
'Roma' => 2753000
)];
 
$somma = 0;
 
foreach ($residenti as $città => $nResidenti) {
echo "La città $città ha $nResidenti abitanti";
$somma += $nResidenti;
Line 154 ⟶ 155:
 
echo "In tutto ci sono $somma abitanti!";
?>
</syntaxhighlight>
L'output del codice è: <code>La città Torino ha {{formatnum:908551}} abitanti. La città Milano ha {{formatnum:1315791}} abitanti. La città Roma ha {{formatnum:2753000}} abitanti. In tutto ci sono {{formatnum:4977342}} abitanti</code>
Riga 171:
* e massimo 3
*/
function somma(int $n1 = 0, int $n2 = 0, int $n3 = 0): int {
return $n1 + $n2 + $n3;
}
 
echo somma(1, 5); //OUTPUT: 6
echo somma(1, 24); //OUTPUT: 25
echo somma(3, 4, 2); //OUTPUT: 9
echo somma(n1: 5, n3: 5); //OUTPUT: 10 --> usabile dalla versione 8
 
?>
</syntaxhighlight>
 
Qualunque variabile di qualunque tipo creata dentro alla funzione è ''locale''. Per specificare variabili globali dentro alla funzione si usapuò usare <code>global $variabile</code><ref>{{Cita web|url=https://www.php.net/manual/en/language.variables.scope.php|titolo=PHP: Variable scope - Manual|accesso=17 ottobre 2020}}</ref>
 
Esempio:
<syntaxhighlight lang="php">
<?php
function esperimento(): void {
global $a;
$a = "tre";
Line 201 ⟶ 199:
esperimento();
echo "Dopo: $a $b";
?>
</syntaxhighlight>
Il risultato sarà: <code>Prima uno due Durante tre quattro Dopo tre due</code>.
 
=== Inclusioni ===
È possibile includere unauno paginascript PHP all'interno di un'altra altro per eseguirne il codice, per evitare codice ridondante e per accedere a variabili, funzioni e classi definite nellanello paginascript inclusaincluso.
 
Per farlo si utilizza una delle seguenti istruzioni: <code>include</code><ref>{{Cita web |url=http://www.php.net/manual/it/function.include.php |titolo=Manuale PHP - include |accesso=31 gennaio 2014 |dataarchivio=1 febbraio 2014 |urlarchivio=https://web.archive.org/web/20140201220826/http://www.php.net/manual/it/function.include.php |urlmorto=sì }}</ref>, <code>include_once</code><ref>{{Cita web |url=http://it2.php.net/manual/it/function.include-once.php |titolo=Manuale PHP - include_once |accesso=31 gennaio 2014 |urlarchivio=https://web.archive.org/web/20140201220826/http://it2.php.net/manual/it/function.include-once.php |urlmorto=sì }}</ref>, <code>require</code><ref>{{Cita web |url=http://it2.php.net/manual/it/function.require.php |titolo=Manuale PHP - require |accesso=31 gennaio 2014 |urlarchivio=https://web.archive.org/web/20140201220829/http://it2.php.net/manual/it/function.require.php |urlmorto=sì }}</ref> e <code>require_once</code><ref>{{Cita web |url=http://it2.php.net/manual/it/function.require-once.php |titolo=Manuale PHP - require_once |accesso=31 gennaio 2014 |urlarchivio=https://web.archive.org/web/20140201220832/http://it2.php.net/manual/it/function.require-once.php |urlmorto=sì }}</ref>. Esempio:
Line 213 ⟶ 210:
echo "Ciao mondo!";
include 'footer.php';
?></syntaxhighlight>
 
Tipi di inclusione:
Line 221 ⟶ 218:
 
=== Gestione dei parametri ===
Il PHP permette il passaggio di informazioni da una pagina all'altra attraverso le diverse funzionalità supportate dall'[[Hypertext Transfer Protocol#Riga di richiesta|HTTP]]. Nello specifico, richieste di tipo '''GET''' (informazioni parametrizzate nella [[query string]] dell'[[URL]]), '''POST''' (informazioni generalmente con origine da un precedente invio di un [[form]]) e dei [[cookie]] (informazioni contenute in piccole stringhe di testo salvate fisicamente nella memoria locale di un browser), insieme al supporto alle [[Sessione|sessioni]] (funzionalità basata sull'utilizzo dei ''cookie''). Queste informazioni sono utilizzabili in PHP tramite quattro [[array]] di tipo associativo chiamati internamente: <code>$_GET</code>, <code>$_POST</code>, <code>$_COOKIE</code>, <code>$_SESSION</code>. Questi tipi di array vengono chiamati superglobali<ref>{{Cita web|url=https://www.php.net/manual/en/language.variables.superglobals.php|titolo=PHP: Superglobals - Manual|accesso=17 ottobre 2020}}</ref> ovvero che sono visibili ad ogni [[Visibilità (programmazione)|scope]] del programma.
 
In questo esempio di gestione di un parametro GET, con la richiesta <code><nowiki>http://example.org/esempio.php?pippo=Ciao</nowiki></code>, il server caricherà contenuto di esempio.php (qui sotto) e mostrerà sul browser "Ciao".
Line 231 ⟶ 228:
*/
 
if ( isset( $_GET['pippo'] ) ) {
$a = $_GET['pippo']; // Salvo nella variabile $a il parametro "pippo"
 
Line 240 ⟶ 237:
echo "Nessun parametro di nome pippo trovato. Devi inviarlo!";
}
?>
</syntaxhighlight>
 
Line 246 ⟶ 242:
<syntaxhighlight lang="php">
<?php
function get_hello_world(mixed $value1, mixed $value2): string {
$result = '';
 
/*
Line 254 ⟶ 250:
* ma è buona norma usarle sempre, per leggibilità del codice.
*/
if ($value1 != '') {
$result .= $value1; // Equivale a: $result = $result . $value1;
}
}
 
if (($value1 != ' ') && ($value2 != ' ')) {
$result .= " ";
}
 
/*
* !empty($value2) equivale a: $value2 != "" && $value2 != null
* Il "punto esclamativo" serve per negare un valore booleano
*/
if (!empty($value2)) {
$result .= $value2; // Equivale a: $result = $result . $value2;
}
Line 274 ⟶ 270:
 
echo get_hello_world('Hello', 'world');
?>
</syntaxhighlight>
 
Line 285 ⟶ 280:
*/
 
for ($n = 0; $n <= 9; $n ++) {
echo $n;
}
 
// Output -> 0123456789
?>
</syntaxhighlight>
 
Line 305 ⟶ 299:
$result = $mysqli->query("SELECT id FROM persone");
 
while ($row = $result->fetch_assoc()) {
echo $row['id'] . "<br />";
}
Line 313 ⟶ 307:
* sotto forma di array che verrà poi stampato tramite un ciclo while
*/
?>
</syntaxhighlight>
 
Line 332 ⟶ 325:
* Restituisce una "s" se l'argomento passato non è 1.
*/
function plural(int $number): string {
// L'operatore ternario (!= ? :) è una struttura condizionale
// simile a if-else: (condizione ? true : false)
Line 342 ⟶ 335:
$a_capo = "<br />\r\n";
 
for ($i = 99; $i > 0; $i--) {
echo "$i bottle" . plural($i) . " of beer on the wall,$a_capo";
// Non abbiamo bisogno di ripetere il comando echo per ogni riga:
Line 359 ⟶ 352:
}
echo "Go to the store, $a_capo buy some more, $a_capo 99 bottles of beer on the wall!";
?>
</syntaxhighlight>
 
Line 376 ⟶ 368:
/*
* Questo è il modo ufficiale di controllare se una connessione MySQL è fallita,
* MA $connect_error non è supportato fino a PHP 5.2.9 e 5.3.0.
*/
if (null !== $mysqli->connect_error) {
die("Connessione fallita, motivi: " . $mysqli->connect_error);
}
 
// Proviamo una query ipotizzando che stiamo elaborando dati provenienti da una simil-rubrica:
$SQLQuery = $mysqli->query("SELECT indirizzo, telefono FROM utenti WHERE nome = 'Francesca' ");
 
// Da questa query otterremo l'indirizzo e il telefono della persona di nome Francesca,
// ipotizzando sia presente nella tabella utenti della base di dati in questione.
 
// Ora "trasformiamo" i dati ricevuti dalla query in un array associativo, utilizzabile successivamente
$row = $SQLQuery->fetch_assoc();
 
Line 396 ⟶ 387:
// Chiusura della connessione alla base di dati
$mysqli->close();
?>
</syntaxhighlight>