scope des variables

Tags:

La visibilité (ou "scope") d'une variable dépend de sa première utilisation. Pour une fonction *:

<?php
$x = 5;
echo $x; //affiche "5"
test();
echo $x; //affiche "5" car ce $x-ci n'est plus celui de la fonction test()


function test()
{
    $x = 7;
    echo $x; //affiche "7" car $x appartient à la fonction test()
}

Un autre ex:

<?php
$x = 5;
echo $x;              //affiche "5"
$objet_test = new Test(7);
echo $objet_test->x;  //affiche "7"


class Test
{
    public $x;
    public function __construct($valeur)
    {
        $this->x = $valeur;
    }
}

 


Une variable n'est visible que dans la fonction dans laquelle elle a été définie

<?php
$x = 5;
echo $x; //affiche "5"
test(); //affiche une erreur
echo $x; //affiche "5"


function test()
{
    echo $x; //illégal car $x n'est pas défini dans la fonction test()
}

 


* Il existe cependant un mot clef "global" permettant d'outrepasser cette restriction :

<?php
$x = 5;
echo $x; //affiche "5"
test();  //affiche "5"
echo $x; //affiche "5"


function test()
{
    global $x;
    echo $x; //reprend le "$x" du scope global
}