Variable für Klasse sichtbar machen
Daniel
- php
Hallo Forum,
also ich habe da mal eine Frage, und zwar, ob ich eine irgendwo deklarierte Variable in einer Klasse zugreifen kann?`
Beispiel
//test_class.php
$test = "hallo";
include("class.php");
$dieKlasse = new myClass();
//class.php
Class myClass {
function myClass() {
echo $test;
}
}
Meine gewünschte Ausgabe wäre "hallo"! Allerdings bekomm ich den Fehler: <b>Fatal error</b>: Call to a member function on a non-object in ... Achso vielleicht macht das auch noch was aus, aber das $test ist im konkreten Fall auch ein Instanz der Klasse.
Es müsste doch noch eine andere Möglichkeit geben, außer der Klasse die Variable als Refernz zu übergeben, oder nicht? Wie würde ich das ganze denn als Referenz übergeben? Da hab ich keine Ahnung von new MyClass(&$test)??? Naja das wäre mir nicht ganz so lieb.
Eine gute Nacht
Daniel
Hallo Leute,
also habs jetzt mal so ausprobiert:
//test_class.php
$test = "hallo";
include("class.php");
$dieKlasse = new myClass($test);//class.php
Class myClass {
function myClass(&test) {
echo $test;
}
}
Naja geht auch mit Referenz, wie man sieht, allerdings ist mir das nicht ganz so lieb... gibt es noch andere Möglichkeiten?
Bis dann
Daniel
Hallo,
class myClass {
var $test;
function myClass($test) {
$this->test=$test;
echo $this->test;
}
}
Gruß
Ralf
Hi Ralf,
sorry da hatte ich mich wohl etwas unklar ausgedrückt. Wenn ich beispielsweise irgendwo im Skript eine Instanz instanziere (irgendwie gefällt mir das nicht Instanz instanzieren *schief*), dann dann kann ich die nicht also var in der Klasse deklarieren, weil ich die überall im Skript brauche, beispielsweise könnte da nen DB-Klasse etc sein.
Trotzdem danke
Daniel
Hallo Forum,
also ich habe da mal eine Frage, und zwar, ob ich eine irgendwo deklarierte Variable in einer Klasse zugreifen kann?`
Beispiel
//test_class.php
$test = "hallo";
include("class.php");
$dieKlasse = new myClass();//class.php
Class myClass {
function myClass() {
echo $test;
}
}Meine gewünschte Ausgabe wäre "hallo"! Allerdings bekomm ich den Fehler: <b>Fatal error</b>: Call to a member function on a non-object in ... Achso vielleicht macht das auch noch was aus, aber das $test ist im konkreten Fall auch ein Instanz der Klasse.
Es müsste doch noch eine andere Möglichkeit geben, außer der Klasse die Variable als Refernz zu übergeben, oder nicht? Wie würde ich das ganze denn als Referenz übergeben? Da hab ich keine Ahnung von new MyClass(&$test)??? Naja das wäre mir nicht ganz so lieb.
Dein Fall funktioniert nicht, da a) die Klasse noch nicht instanziert ist (also im Namensraum von PHP schlichtweg nicht existiert) und b) weil du nicht die Klassenvariable veränderst, sondern irgendeine andere ($this->test != $test). Wenn du aber $test als Klassenvariable in einer zweiten Klasse instanzierst und deine erste Klasse von der zweiten abgeleitet wird, dann ist $test auch in der ersten (deiner) sichtbar:
class foo {
var $test = "Hallo";
}
Class myClass extends foo {
function myClass() {
echo($this->test);
}
}
$myclass = new myClass();
Ein anderer Weg wäre die Nutzung von Konstanten.
Denke immer daran, dass Klassen anderen Sichtbarkeiten unterliegt. Klassenvariablen kannst du nur über eine Instanz verändern oder durch überschreiben mittels einer zweiten Klasse.