Robi: Variable für Klasse sichtbar machen

Beitrag lesen

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.