Question sur la portée de variable

Fermé
testerlasocieter - Modifié le 26 nov. 2019 à 15:06
yg_be Messages postés 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 - 26 nov. 2019 à 16:13
Bonjour,
Pourquoi


<?php
function test () {
    $newShipper = $ShipperClass->GetShipperName(); //retourne une chaine de caractere
    echo $newShipper; // <-- instruction montrée a une valeur qui convient
}
test();

fonctionne au niveau de l'instruction montrée


$newShipper = $ShipperClass->GetShipperName(); //retourne une chaine de caractere
function test () {
    echo $newShipper; // <-- instruction montrée est NULL
}
test();


ne fonctionne pas au niveau de l'instructions montrée ? :(

Pourtant, au vu du cours sur la portée des variables, une variable définit dans un scope supérieur est accessible dans un scope enfant qu'est la fonction, non ?

Merci d'avance

1 réponse

yg_be Messages postés 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
Modifié le 26 nov. 2019 à 16:14
bonjour,
En PHP, une variable globale doit être déclarée à l'intérieur de chaque fonction afin de pouvoir être utilisée dans cette fonction.
https://www.php.net/manual/fr/language.variables.scope.php
$newShipper = $ShipperClass->GetShipperName(); //retourne une chaine de caractere
function test () {
    global $newShipper; 
    echo $newShipper; // <-- instruction montrée va utiliser la variable globale
}
test();
0