Salta ai contenuti

Scope delle variabili

Lo scope e la zona in cui una variabile esiste ed e leggibile.

Una variabile creata dentro una funzione non e automaticamente disponibile fuori. Una variabile creata fuori non entra automaticamente dentro.

<?php
function saluta() {
$nome = "Luca";
echo $nome;
}
saluta();

$nome esiste solo dentro la funzione saluta.

Questo codice invece non funziona come potresti aspettarti:

<?php
function preparaNome() {
$nome = "Luca";
}
preparaNome();
echo $nome;

Fuori dalla funzione, $nome non esiste.

Il modo piu pulito per portare dati dentro una funzione e usare parametri.

<?php
function saluta($nome) {
echo "Ciao $nome";
}
saluta("Sara");

Il modo piu pulito per portare dati fuori da una funzione e usare return.

<?php
function creaMessaggio($nome) {
return "Ciao $nome";
}
$messaggio = creaMessaggio("Marta");
echo $messaggio;

PHP permette di usare global, ma e meglio limitarlo.

<?php
$iva = 22;
function mostraIva() {
global $iva;
echo $iva;
}

Il codice funziona, ma la funzione dipende da qualcosa che sta fuori. Con parametri e return, il collegamento e piu chiaro.

Lo scope evita che una variabile venga modificata per sbaglio da una parte lontana del programma. Una funzione con parametri chiari e piu prevedibile.

<?php
function applicaSconto($prezzo, $sconto) {
return $prezzo - $sconto;
}
$totale = applicaSconto(30, 5);
echo $totale;

La funzione lavora solo con i valori che riceve. Non deve cercare variabili nascoste nel resto del file.

Puoi avere variabili con lo stesso nome in scope diversi.

<?php
$nome = "Luca";
function saluta() {
$nome = "Sara";
echo $nome;
}
saluta();
echo $nome;

Dentro la funzione $nome vale Sara. Fuori vale ancora Luca.

Quando scrivi una funzione, prova a farle ricevere tutto cio che le serve tramite parametri. Se deve produrre un risultato, usa return. Tieni global come ultima scelta.