JavascriptProva

martedì 1 maggio 2018

Scope delle variabili in php

Mi sono esercitato su altri blog con le variabili php, ma è meglio che lo faccia qui perché per me il php è una novità, più che una cosa su cui esercitarsi.
L'ho già toccato distrattamente in passato, ma adesso lo scopro come una necessità piuttosto impellente.

Ho visto i tipi di variabili, perlomeno alcuni tipi di variabili, ma adesso è il caso che faccia uno studio generale.

Lo Scope è fondamentale.
Anche qui, come in JavaScript, esistono le funzioni.
Scrivo una funzione la chiamo, banalmente.
<?php

function funzione(){
    echo "Questa è una funzione";
}

funzione();
?> 
Sì, funziona esattamente come il JavaScript.

Detto questo, analizziamo lo scope.
<?php
$variabile=123;
function funzione(){
    echo $variabile;
}

funzione();
?>

Notice: Undefined variable: variabile in /storage/ssd3/737/3147737/public_html/index.php on line 4

La variabile dichiarata fuori dalla funzione non viene letta nella funzione.

variabile letta al di fuori di una funzione:
<?php
$variabile=123;
function funzione(){
    echo "funzione";
}

funzione();
echo $variabile;
?> 
funzione123



Allo stesso modo, la variabile dichiarata nella funzione non dovrebbe poter essere letta al di fuori.
Proviamo:
<?php

function funzione(){
    $variabile=123;
}

funzione();
echo $variabile;
?> 

Notice: Undefined variable: variabile in /storage/ssd3/737/3147737/public_html/index.php on line 8


...e dovrebbe venir letta all'interno della funzione:
<?php

function funzione(){
    $variabile=123;
    echo $variabile;
}

funzione();

?> 
123



Come faccio a leggere una variabile globale all'interno di una funzione?
Credo di aver capito che ci sono due modi:
  • mediante la parola chiave global;
  • mediante l'array $GLOBALS[index] in cui sono immagazzinate le variabili globali (in index va il nome della variabile).
Proviamo...

<?php
$variabile=123;
function funzione(){
    global $variabile;
    echo $variabile;
}

funzione();

?> 
123



Proviamo l'altro metodo:
<?php
$variabile=123;
function funzione(){
    
    echo $GLOBALS['variabile'];
}

funzione();

?> 
123

Perfetto!

Nessun commento:

Posta un commento