Daniel: Variable für Klasse sichtbar machen

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

  1. 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

    1. Hallo,

      class myClass {
        var $test;

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

      Gruß

      Ralf

      1. 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

  2. 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.