Portée des variables
Fait partie de la section Fondamentaux du Journey PHP de Coddy. Leçon 67 sur 71.
Les variables créées à l’intérieur d’une fonction sont complètement distinctes des variables qui se trouvent en dehors de celle-ci. Ce concept s’appelle la portée des variables, et le comprendre permet d’éviter des bugs déroutants dans votre code.
Une variable définie à l’intérieur d’une fonction n’existe que dans cette fonction. On l’appelle une variable locale :
<?php
function sayHi() {
$message = "Hello!";
echo $message;
}
sayHi();
echo $message; // Erreur : $message n'existe pas ici
?>La variable $message est créée à l’intérieur de sayHi() et disparaît lorsque la fonction se termine. Essayer d’y accéder depuis l’extérieur provoque une erreur.
De même, les variables définies en dehors d’une fonction ne sont pas automatiquement disponibles à l’intérieur de celle-ci :
<?php
$name = "Alice";
function greet() {
echo $name; // Erreur : $name n'est pas défini à l'intérieur de cette fonction
}
greet();
?>Bien que $name existe dans le code principal, la fonction ne peut pas le voir. Pour utiliser des valeurs externes dans une fonction, transmettez-les en tant que paramètres : c’est l’approche propre et recommandée que vous avez déjà apprise.
Cette séparation est en fait utile. Cela signifie que les fonctions ne modifieront pas accidentellement les variables dans d’autres parties de ton programme, ce qui rend ton code plus prévisible et plus facile à déboguer.
Défi
FacileLisez deux lignes d’entrée :
- Le nom d’une personne (par ex.,
Alice) - Un montant de prime sous forme de nombre entier (par ex.,
50)
Créez une fonction appelée calculateBonus qui accepte deux paramètres : $name (chaîne) et $bonus (entier).
À l’intérieur de la fonction :
- Créez une variable locale
$baseSalaryet définissez-la sur1000 - Calculez la rémunération totale en additionnant
$baseSalaryet$bonus - Renvoyez une chaîne au format suivant :
[name] earns [total]
Appelez la fonction avec les valeurs saisies et affichez le résultat renvoyé.
Exemple 1 :
Si les entrées sont Alice et 50, la sortie doit être :
Alice earns 1050Exemple 2 :
Si les entrées sont Bob et 200, la sortie doit être :
Bob earns 1200Exemple 3 :
Si les entrées sont Emma et 0, la sortie doit être :
Emma earns 1000Essayez vous-même
<?php
// Lire l'entrée
$name = trim(fgets(STDIN));
$bonus = intval(fgets(STDIN));
// TODO: Créer la fonction calculateBonus ci-dessous
// - Elle doit accepter $name (string) et $bonus (int) comme paramètres
// - Créer une variable locale $baseSalary initialisée à 1000
// - Calculer le salaire total et retourner "[name] earns [total]"
// Appeler la fonction et afficher le résultat
echo calculateBonus($name, $bonus);
?>Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
4Opérateurs de comparaison et logiques
Opérateurs de comparaisonÉgalité et identitéOpérateurs logiques — Partie 1Opérateurs logiques — Partie 2Récapitulatif — Logique simple2Variables et types de données
NombresChaînes et guillemetsBooléensConventions de nommageRécapitulatif - initialisation des variablesVariables videsConcaténation de chaînesObtenir une saisie utilisateurConvertir vers différents types5Logique conditionnelle
Instruction ifIf - ElseOpérateur ternaireOpérateur de coalescence nulleInstruction switchRécapitulatif - Prendre des décisions3Opérateurs de base
Opérateurs arithmétiquesOpérateur moduloOpérateur d’exponentiationAffectation combinéeIncrémentation/DécrémentationPriorité des opérateursRécapitulatif - Calculs simplesOpérateurs sur les chaînesEntraînez-vous par vous-même : Compilateur PHP en ligne