Ambito delle variabili
Fa parte della sezione Fondamenti del percorso PHP di Coddy. Lezione 67 di 71.
Le variabili create all'interno di una funzione sono completamente separate dalle variabili al di fuori di essa. Questo concetto si chiama ambito delle variabili e comprenderlo previene bug difficili da individuare nel tuo codice.
Una variabile definita all'interno di una funzione esiste solo all'interno di quella funzione. Si chiama variabile locale:
<?php
function sayHi() {
$message = "Hello!";
echo $message;
}
sayHi();
echo $message; // Errore: $message non esiste qui
?>La variabile $message viene creata all'interno di sayHi() e scompare quando la funzione termina. Provare ad accedervi dall'esterno causa un errore.
Analogamente, le variabili definite al di fuori di una funzione non sono automaticamente disponibili al suo interno:
<?php
$name = "Alice";
function greet() {
echo $name; // Errore: $name non è definita all'interno di questa funzione
}
greet();
?>Anche se $name esiste nel codice principale, la funzione non può vederlo. Per usare valori esterni in una funzione, passali come parametri: è l'approccio più pulito e consigliato, che hai già imparato.
Questa separazione è in realtà utile. Significa che le funzioni non modificheranno accidentalmente le variabili in altre parti del tuo programma, rendendo il tuo codice più prevedibile e più facile da correggere.
Sfida
FacileLeggi due righe di input:
- Il nome di una persona (ad es.,
Alice) - Un importo del bonus come numero intero (ad es.,
50)
Crea una funzione chiamata calculateBonus che accetti due parametri: $name (stringa) e $bonus (int).
All'interno della funzione:
- Crea una variabile locale
$baseSalarye impostala a1000 - Calcola la retribuzione totale sommando
$baseSalarye$bonus - Restituisci una stringa nel formato:
[name] earns [total]
Chiama la funzione con i valori di input e stampa il risultato restituito.
Esempio 1:
Se gli input sono Alice e 50, l'output dovrebbe essere:
Alice earns 1050Esempio 2:
Se gli input sono Bob e 200, l'output dovrebbe essere:
Bob earns 1200Esempio 3:
Se gli input sono Emma e 0, l'output dovrebbe essere:
Emma earns 1000Provalo tu
<?php
// Leggi l'input
$name = trim(fgets(STDIN));
$bonus = intval(fgets(STDIN));
// TODO: Crea la funzione calculateBonus qui sotto
// - Deve accettare $name (string) e $bonus (int) come parametri
// - Crea una variabile locale $baseSalary impostata a 1000
// - Calcola la retribuzione totale e restituisci "[name] earns [total]"
// Chiama la funzione e stampa il risultato
echo calculateBonus($name, $bonus);
?>Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori di confronto e logici
Operatori di confrontoUguaglianza e identitàOperatori logici Parte 1Operatori logici Parte 2Riepilogo - Logica semplice2Variabili e tipi di dati
NumeriStringhe e virgoletteValori booleaniConvenzioni di denominazioneRiepilogo - Inizializzazione delle variabiliVariabili vuoteConcatenazione di stringheAcquisire input dall'utenteConvertire in tipi diversi5Logica condizionale
Istruzione ifIf - elseL’operatore ternarioOperatore null coalescingIstruzione switchRiepilogo - Prendere decisioni3Operatori di base
Operatori aritmeticiOperatore moduloOperatore di elevamento a potenzaAssegnazione compostaIncremento/decrementoPrecedenza degli operatoriRiepilogo - calcoli sempliciOperatori per stringheEsercitati da solo: Compilatore PHP online