Thomas: Variablenexistenz bei 'require'

Hallo allerseits.

Ich habe folgendes Problem:

ich habe zwei php-Files: navigation.php und main.php

ich möchte in main.php über require("navigation.php") die andere Datei einbinden, und in main eine Variable verwenden, die in navigation.php initialisiert wurde.

Leider kennt main.php diese Variable jedoch nicht.

In einem Buch über PHP hab ich mal gelesen, dass PHP beim Befehl require die betroffene Datei (hier navigation.php) praktisch in die aufrufende Datei (hier main.php) einliest, als wäre der eingebundene Quellcode direkt in main.php geschrieben worden.
Wenn dem so ist, müsste er die Variable doch eigentlich kennen.

Hat jemand eine Idee, woran das liegen könnte und wie ich main.php die Variable aus navigation.php bekannt machen kann?

Vielen Dank vorab für alle hilfreichen Beiträge,
Thomas

  1. Es könnte sein, das dein server ein schutz(etwa wie bei der Übertragung von Variablen per POST oder GET hat) oder das du die Variable in einer Funktion definiert hast!

  2. Hallo Thomas,

    globale Variablen sind so eine Sache für sich :(. Ich liebe sie nicht, denn sie machen Nebeneffekte, die man dann kaum noch überschauen kann.

    Nix für ungut. Was ich vorschlagen würde, ist, dass du dir in navigation.php  eine Klasse definierst, und zwar wie folgt:

    class navigation
    {
        var $x,$y,$z;
        function navigation()  #der Konstruktor dieser Klasse
        {
           $this->x="X";                            # Hier werden die
           $this->y="Ich bin heute schlecht drauf"; #Variablen
                                                    # initialisiert
           # und hast du nicht gesehen.......
        }

    }

    in main.php rufst du diese Klasse auf mit:

    $nav = new navigation;

    $nav->x="Quatsch"; ### u.s.w.

    Klassen erfordern leider auch ein Umdenken. Ich finde sie aber in solchen Sachen sehr praktisch.

    Grüße,

    Wolfram

    1. Klassen erfordern leider auch ein Umdenken. Ich finde sie aber in solchen Sachen sehr praktisch.

      Vielen Dank für den Tipp.
      Das wäre eine Möglichkeit - Klassen kenne ich ja aus c++.
      Ich werds so mal ausprobieren,

      Thomas

  3. Hi,

    In einem Buch über PHP hab ich mal gelesen, dass PHP beim Befehl require die betroffene Datei (hier navigation.php) praktisch in die aufrufende Datei (hier main.php) einliest, als wäre der eingebundene Quellcode direkt in main.php geschrieben worden.
    Wenn dem so ist, müsste er die Variable doch eigentlich kennen.

    Ja, dem ist so.

    Hat jemand eine Idee, woran das liegen könnte und wie ich main.php die Variable aus navigation.php bekannt machen kann?

    Ein wenig deines Quellcodes wäre mit Sicherheit hilfreich.

    Gruß,
    Andreas.