2010-12-07 14 views
8

Wie kann ich eine globale Variable in dieser Klasse setzen? Ich habe es versucht:Variabler Gültigkeitsbereich innerhalb der PHP-Klasse

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

Welche fehlgeschlagen, die Seite vollständig unter Berufung auf einen Fehler 500 zu laden. Als nächstes habe ich versucht, dieses:

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

Aber wenn ich diese beiden gedruckt, alles, was ich leider für eine solche einfache Frage zu sehen ist „wieder“!

Danke!

Antwort

17

kann diese Variable wie diese $this auf der Vorderseite Ihrer Variablen Hinzufügen

echo $this->test; 
+0

Danke es funktionierte –

1

Try zugegriffen werden; Sie könnte das zweite Beispiel zu

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' 

Bitte starten Sie hier Lesen ändern: http://php.net/manual/en/language.oop5.basic.php

3

gibt es tatsächlich zwei Möglichkeiten, entweder innerhalb der Klasse oder außerhalb eine Variable oder Funktion in einer Klasse zuzugreifen, wenn sie darum ersuchen Artikel ist öffentlich (oder in einigen Fällen geschützt)

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

in example2 es, doesn‘ t es muss echo sein $ this-> test. "again";? –

+0

richtig, ich vermisste das Hinzufügen von 'this' zu dieser Aussage, aktualisiert ... – Patrick

7

wenn Sie eine Instanzvariable (konserviert nur für diese Instanz der Klasse) möchten, verwenden Sie:

$this->test 

(als eine andere Antwort vorgeschlagen.)

Wenn Sie ein „Klasse“ Variable wollen, Präfix es mit dem „statischen“ Schlüsselwort wie folgt aus:

Die Klassenvariable ist anders als die Instanz Variable, in der alle Objektinstanzen, die aus der Klasse erstellt wurden, dieselbe Variable verwenden.

(Hinweis Klassenvariablen zuzugreifen, verwenden Sie den Klassenname oder ‚Selbst‘, gefolgt von ‚::‘)

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

Schließlich, wenn Sie eine wahre Konstante (unveränderbar) wollen, verwenden Sie ‚const‘ in Front (wieder zugreifen es mit 'selbst' plus '::' plus den Namen der konstante (obwohl diesmal die '$') weglassen:!

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