Zugriff auf Globale Variablen innerhalb einer Klasse
Habe ich folgende (gekürzte) code:
<?PHP
class A {
function Show(){
echo "ciao";
}
}
$a = new A();
$b = new B();
class B {
function __construct() {
$a->Show();
}
}
?>
Mit etwas überraschung habe ich keinen Zugriff auf die Global definierten Variablen "$a " innerhalb der Klasse, und ich bekomme ein Undefined variable Ausnahme. Keine Hilfe?
InformationsquelleAutor pistacchio | 2009-12-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum die überraschung? Das ist eine ziemlich logische variable scope-problem gibt...
Ich schlage vor, Sie verwenden entweder die
global
Schlüsselwort oder variable$GLOBALS
Zugriff auf deine variable.EDIT: So, in Ihrem Fall das sein wird:
oder
EDIT 2: Und seit Vinko Recht ist, schlage ich vor, Sie werfen Sie einen Blick auf das PHP-Handbuch über Geltungsbereich von Variablen.
Gotcha, Vinko. Danke.
InformationsquelleAutor Franz
verwenden Sie bitte nicht die Globale Methode wird vorgeschlagen. Das macht mein Magen weh.
Pass $a in den Konstruktor von B.
In diesem Beispiel zwar, warum wouldnt B erweitern?
es hängt alles von der Beziehung zwischen den beiden Klassen.
Zu erweitern auf das, was Galen sagte,... Weil Sie nicht wollen, B Erben alle Methoden. In diesem speziellen Fall, so erhält das gleiche Ergebnis, aber was, wenn Sie eine Konstruktor-Methode Ein, dass echo einen unerwünschten Wert für B? Es könnte einen noch größeren Chaos in Abhängigkeit von der Komplexität der Objekte.
InformationsquelleAutor Galen
Müssen Sie definieren es als eine
global
- Variablen innerhalb des Bereichs der Funktion, die Sie möchten, es zu benutzen.InformationsquelleAutor LiraNuna
InformationsquelleAutor Jay Zeng