2010-12-07 19 views
8

Comment puis-je définir une variable globale dans cette classe? Je l'ai essayé:Portée de la variable dans la classe PHP

class myClass 
{ 
    $test = "The Test Worked!"; 
    function example() 
    { 
     echo $test; 
    } 
    function example2() 
    { 
     echo $test." again"; 
    } 
} 

Ce qui n'a pas réussi à charger la page complètement citant une erreur 500. Ensuite, j'ai essayé celui-ci:

class myClass 
{ 
    public $test = "The Test Worked!"; 
    function example() 
    { 
     echo $test; 
    } 
    function example2() 
    { 
     echo $test." again"; 
    } 
} 

Mais quand j'imprimé ces deux, tout ce que je vois est « à nouveau » Désolé pour une question aussi simple!

Merci!

Répondre

17

cette variable est accessible comme celui-ci

echo $this->test; 
+0

Merci a travaillé –

1

Essayez d'ajouter $this à l'avant de vos variables; vous pouvez changer le deuxième exemple

class myClass { 
    public $test = "The Test Worked!"; 

    function example() { 
     echo $this->test; 
    } 

    function example2(){ 
     echo $this->test." again"; 
    } 
} 
5
class Foo { 

    public $bar = 'bar'; 

    function baz() { 
     $bar; // refers to local variable inside function, currently undefined 

     $this->bar; // refers to property $bar of $this object, 
        // i.e. the value 'bar' 
    } 
} 

$foo = new Foo(); 
$foo->bar; // refers to property $bar of object $foo, i.e. the value 'bar' 

S'il vous plaît commencer à lire ici: http://php.net/manual/en/language.oop5.basic.php

3

il y a en fait deux façons d'accéder à une variable ou une fonction dans une classe à partir soit dans la classe ou à l'extérieur, si elles le demandent article est public (ou dans certains cas protégés)

class myClass 
{ 
    public $test = "The Test Worked!"; 
    function example() 
    { 
     echo $this->test; 
     // or with the scope resolution operator 
     echo myClass::test; 
    } 
    function example2() 
    { 
     echo $this->test." again"; 
     // or with the scope resolution operator 
     echo myClass::test." again"; 
    } 
} 
+0

dans example2 là, n » t il doit être echo $ this-> test. "again";? –

+0

correct, j'ai manqué d'ajouter 'this' à cette déclaration, mis à jour ... – Patrick

7

Si vous voulez une variable d'instance (conservée uniquement pour cette instance de la classe), utilisez:

$this->test 

(comme une autre réponse suggérée.)

Si vous voulez une variable « classe », préfixe avec le mot-clé « statique » comme ceci:

La variable de classe est différente de l'instance variable en ce que toutes les instances d'objet créées à partir de la classe partageront la même variable.

(Note pour accéder aux variables de classe, utilisez le nom de classe, ou 'auto' suivi de '::')

class myClass 
{ 
    public static $test = "The Test Worked!"; 
    function example() 
    { 
     echo self::$test; 
    } 
    function example2() 
    { 
     echo self::$test." again"; 
    } 
} 

Enfin, si vous voulez une vraie constante (inchangeable), utilisez 'const' dans avant (y accéder à nouveau avec « auto » plus « :: » plus le nom de la constante (bien que cette fois omettent le « $ »):!

class myClass 
{ 
    const test = "The Test Worked!"; 
    function example() 
    { 
     echo self::test; 
    } 
    function example2() 
    { 
     echo self::test." again"; 
    } 
}