Variable Scope
Parte de la sección Fundamentos del Journey de PHP de Coddy — lección 67 de 71.
Las variables creadas dentro de una función están completamente separadas de las variables fuera de ella. Este concepto se llama alcance de variable, y entenderlo previene errores confusos en tu código.
Una variable definida dentro de una función solo existe dentro de esa función. Se llama una variable local:
<?php
function sayHi() {
$message = "Hello!";
echo $message;
}
sayHi();
echo $message; // Error: $message no existe aquí
?>La variable $message se crea dentro de sayHi() y desaparece cuando la función termina. Intentar acceder a ella desde fuera causa un error.
De manera similar, las variables definidas fuera de una función no están disponibles automáticamente dentro de ella:
<?php
$name = "Alice";
function greet() {
echo $name; // Error: $name no está definida dentro de esta función
}
greet();
?>Aunque $name existe en el código principal, la función no puede verlo. Para usar valores externos en una función, pásalos como parámetros—ese es el enfoque limpio y recomendado que ya has aprendido.
Esta separación es en realidad útil. Esto significa que las funciones no cambiarán accidentalmente variables en otras partes de tu programa, haciendo que tu código sea más predecible y más fácil de depurar.
Desafío
FácilLee dos líneas de entrada:
- El nombre de una persona (por ejemplo,
Alice) - Una cantidad de bonificación como un número entero (por ejemplo,
50)
Crea una función llamada calculateBonus que acepte dos parámetros: $name (string) y $bonus (int).
Dentro de la función:
- Crea una variable local
$baseSalaryy asígnala a1000 - Calcula el pago total sumando
$baseSalaryy$bonus - Devuelve una cadena en el formato:
[name] earns [total]
Llama a la función con los valores de entrada e imprime el resultado devuelto.
Ejemplo 1:
Si las entradas son Alice y 50, la salida debería ser:
Alice earns 1050Ejemplo 2:
Si las entradas son Bob y 200, la salida debería ser:
Bob earns 1200Ejemplo 3:
Si las entradas son Emma y 0, la salida debería ser:
Emma earns 1000Hoja de referencia
Las variables creadas dentro de una función son variables locales y solo existen dentro de esa función. Este concepto se llama alcance de variables.
Una variable definida dentro de una función no se puede acceder desde fuera de ella:
<?php
function sayHi() {
$message = "Hello!";
echo $message;
}
sayHi();
echo $message; // Error: $message doesn't exist here
?>De manera similar, las variables definidas fuera de una función no están disponibles automáticamente dentro de ella:
<?php
$name = "Alice";
function greet() {
echo $name; // Error: $name is not defined inside this function
}
greet();
?>Para usar valores externos en una función, pásalos como parámetros.
Pruébalo tú mismo
<?php
// Leer entrada
$name = trim(fgets(STDIN));
$bonus = intval(fgets(STDIN));
// TODO: Crear la función calculateBonus a continuación
// - Debe aceptar $name (string) y $bonus (int) como parámetros
// - Crear una variable local $baseSalary establecida en 1000
// - Calcular el pago total y retornar "[name] earns [total]"
// Llamar a la función e imprimir el resultado
echo calculateBonus($name, $bonus);
?>Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types5Conditional Logic
If StatementIf - ElseThe Ternary OperatorNull Coalescing OperatorSwitch StatementRecap - Making Decisions3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators