Variable Scope
Parte da seção Fundamentos do Journey de PHP da Coddy — lição 67 de 71.
Variáveis criadas dentro de uma função são completamente separadas de variáveis fora dela. Esse conceito é chamado de escopo de variável, e compreendê-lo previne bugs confusos em seu código.
Uma variável definida dentro de uma função só existe dentro dessa função. Ela é chamada de variável local:
<?php
function sayHi() {
$message = "Hello!";
echo $message;
}
sayHi();
echo $message; // Erro: $message não existe aqui
?>A variável $message é criada dentro de sayHi() e desaparece quando a função termina. Tentar acessá-la fora causa um erro.
Da mesma forma, variáveis definidas fora de uma função não estão automaticamente disponíveis dentro dela:
<?php
$name = "Alice";
function greet() {
echo $name; // Error: $name is not defined inside this function
}
greet();
?>Mesmo que $name exista no código principal, a função não pode vê-lo. Para usar valores externos em uma função, passe-os como parâmetros—essa é a abordagem limpa e recomendada que você já aprendeu.
Essa separação é na verdade útil. Isso significa que as funções não alterarão acidentalmente variáveis em outras partes do seu programa, tornando seu código mais previsível e mais fácil de depurar.
Desafio
FácilLeia duas linhas de entrada:
- O nome de uma pessoa (por exemplo,
Alice) - Um valor de bônus como um número inteiro (por exemplo,
50)
Crie uma função chamada calculateBonus que aceita dois parâmetros: $name (string) e $bonus (int).
Dentro da função:
- Crie uma variável local
$baseSalarye defina-a como1000 - Calcule o pagamento total somando
$baseSalarye$bonus - Retorne uma string no formato:
[name] earns [total]
Chame a função com os valores de entrada e imprima o resultado retornado.
Exemplo 1:
Se as entradas forem Alice e 50, a saída deve ser:
Alice earns 1050Exemplo 2:
Se as entradas forem Bob e 200, a saída deve ser:
Bob earns 1200Exemplo 3:
Se as entradas forem Emma e 0, a saída deve ser:
Emma earns 1000Folha de consulta
Variáveis criadas dentro de uma função são variáveis locais e só existem dentro dessa função. Esse conceito é chamado de escopo de variável.
Uma variável definida dentro de uma função não pode ser acessada fora dela:
<?php
function sayHi() {
$message = "Hello!";
echo $message;
}
sayHi();
echo $message; // Error: $message doesn't exist here
?>Da mesma forma, variáveis definidas fora de uma função não estão automaticamente disponíveis dentro dela:
<?php
$name = "Alice";
function greet() {
echo $name; // Error: $name is not defined inside this function
}
greet();
?>Para usar valores externos em uma função, passe-os como parâmetros.
Experimente você mesmo
<?php
// Ler entrada
$name = trim(fgets(STDIN));
$bonus = intval(fgets(STDIN));
// TODO: Crie a função calculateBonus abaixo
// - Deve aceitar $name (string) e $bonus (int) como parâmetros
// - Crie uma variável local $baseSalary definida como 1000
// - Calcule o pagamento total e retorne "[name] ganha [total]"
// Chame a função e imprima o resultado
echo calculateBonus($name, $bonus);
?>Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições 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