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 son completamente independientes de las variables que están fuera de ella. Este concepto se llama ámbito de la variable, y comprenderlo evita errores confusos en tu código.
A variable defined inside una function solo exist dentro de esa function. Se llama una local variable:
<?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 termina la función. Intentar acceder a ella fuera provoca 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á definido dentro de esta función
}
greet();
?>Aunque $name exist en el código principal, la function no puede verlo. Para usar valores externos en una function, pásalos como parameters: ese es el enfoque limpio y recomendado que ya has aprendido.
Esta separación es realmente útil. Significa que las function no cambiarán accidentalmente las variable en otras partes de tu programa, lo que hace que tu código sea más predecible y fácil de depurar.
Desafío
FácilLee dos líneas de entrada:
- El nombre de una persona (por ejemplo,
Alice) - Una cantidad de bonus como número entero (por ejemplo,
50)
Crea una function llamada calculateBonus que acepte dos parameters: $name (string) y $bonus (int).
Dentro de la function:
- Crea una variable local
$baseSalaryy asígnale1000 - Calcula el total pay sumando
$baseSalaryy$bonus - Devuelve un string con el formato:
[name] earns [total]
Llama a la function con los valores de entrada e imprime el result 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 1000Pruébalo tú mismo
<?php
// Leer entrada
$name = trim(fgets(STDIN));
$bonus = intval(fgets(STDIN));
// TODO: Crea la función calculateBonus a continuación
// - Debe aceptar $name (string) y $bonus (int) como parámetros
// - Crea una variable local $baseSalary establecida en 1000
// - Calcula el pago total y devuelve "[name] earns [total]"
// Llama a la función e imprime 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 OperatorsPractica por tu cuenta: Compilador de PHP online