Escopo de Variáveis
Parte da seção Fundamentos do Journey de PHP da Coddy. Lição 67 de 71.
As variáveis criadas dentro de uma função são completamente separadas das variáveis externas a ela. Esse conceito é chamado de escopo de variável, e entendê-lo evita bugs confusos no 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 dela causa um erro.
Da mesma forma, as variáveis definidas fora de uma função não ficam automaticamente disponíveis dentro dela:
<?php
$name = "Alice";
function greet() {
echo $name; // Erro: $name não está definido dentro desta função
}
greet();
?>Embora $name exista no código principal, a função não consegue 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 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 número inteiro (por exemplo,
50)
Crie uma função chamada calculateBonus que aceite dois parâmetros: $name (string) e $bonus (int).
Dentro da função:
- Crie uma variável local
$baseSalarye atribua a ela o valor1000 - Calcule o pagamento total adicionando
$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 deverá ser:
Alice earns 1050Exemplo 2:
Se as entradas forem Bob e 200, a saída deverá ser:
Bob earns 1200Exemplo 3:
Se as entradas forem Emma e 0, a saída deverá ser:
Emma earns 1000Experimente você mesmo
<?php
// Ler entrada
$name = trim(fgets(STDIN));
$bonus = intval(fgets(STDIN));
// TODO: Crie a função calculateBonus abaixo
// - Ela 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] earns [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
4Operadores de Comparação e Lógicos
Operadores de ComparaçãoIgualdade e IdentidadeOperadores Lógicos - Parte 1Operadores Lógicos - Parte 2Revisão - Lógica Simples2Variáveis e Tipos de Dados
NúmerosStrings e AspasBooleanosConvenções de NomenclaturaRevisão - Inicialização de VariáveisVariáveis VaziasConcatenação de StringsObtendo Entrada do UsuárioConversão para Diferentes Tipos5Lógica Condicional
Instrução IfIf - ElseO Operador TernárioOperador de Coalescência NulaInstrução SwitchRecapitulação - Tomando Decisões3Operadores Básicos
Operadores AritméticosOperador MóduloOperador de ExponenciaçãoAtribuição CombinadaIncremento/DecrementoPrecedência de OperadoresRevisão - Cálculos SimplesOperadores de StringPratique por conta própria: Compilador de PHP online