Klasse Datei mit Variablen includieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Klasse Datei mit Variablen includieren

    Hallo Leute,

    ich habe eine Klasse und habe im Konstruktor folgende Variablen-Deklaration:
    PHP-Code:
    $this->menueText[1][1] = "Startseite";
    $this->menueLink[1][1] = $this->pfad "/index.php";
            
    $this->menueText[2][1] = "News";
    $this->menueLink[2][1] = $this->pfad "/news/index.php";
    usw
    Doch wenn ich jetzt diesen Code in eine extra Datei auslagern möchte und diese dort per include("/include/menue.inc.php") inkludiere, klappt das include zwar schon, aber das Array ist leer. Wenn ich es mit print_r() ausgeben möchte, passiert nichts.

    Wo ist der Fehler???

    Danke im Voraus.

    Gruß
    Sven.

  • #2
    ich kann mir zwar vorstellen, warum es nicht geht, kanns aber nicht erklären

    aber, warum deklarierst du das array nicht so:
    PHP-Code:
    $menueText[1][1] = "Startseite";
    ... 
    und übergibst es an den konstruktor:
    PHP-Code:
    function whatever($_menueText)
    {
        
    $this->menueText $_menueText;

    Kissolino.com

    Kommentar


    • #3
      nochmal...

      War vielleicht schlecht geschildert, neuer Versuch...

      Ich habe folgende Template-Klasse (stark verkürzt):
      PHP-Code:
      class tpl_base
      {
          var 
      $pfad$domain$unite$admin_mail;
          var 
      $menueText$menueLink;

          function 
      tpl_base()
          {
              
      $this->domain "http://server";
              
      $this->pfad "/test";
              
      $this->admin_mail "sven@localhost";
              
      $this->unite "Test-Verein";
              
              include(
      $this->domain $this->pfad "/include/menue.inc.php");
          }

          function 
      body()
          {
              
      Ausgabe menue Ausgabe content
          
      }

      Meine menue.inc.php sieht wie folgt aus:
      PHP-Code:
      $this->menueText[1][1] = "Startseite";
      $this->menueLink[1][1] = $this->pfad "/index.php";
              
      $this->menueText[2][1] = "News";
      $this->menueLink[2][1] = $this->pfad "/news/index.php";
      usw
      Über folgende Klasse lasse ich die Seiten anzeigen (auch stark verkürzt):
      PHP-Code:
      require_once("include/templates/base.php");

      class page extends tpl_base
      {
          var $title = "Test";
          var $headline = "Startseite";

          function content()
          {
              ?>
              Fieldset
              <?php
          
      }
      }

      $tpl = new page();
      $tpl->body();
      Das Problem was ich habe ist in der Klasse "tpl_base" im Konstruktor beim include. Das include klappt, doch die Variablen "$menueText, $menueLink" bleiben leer.

      Wenn ich den Inhalt der include Datei "menue.inc.php" direkt in den Konstruktor schreibe anstatt das include zu verwenden, geht es.

      Wie klappt es denn so???

      Danke schon mal.

      Sven.

      Kommentar


      • #4
        Hmm seltsam. Denn eigentlich heißt es:

        If the include occurs inside a function within the calling file, then all of the code contained in the called file will behave as though it had been defined inside that function. So, it will follow the variable scope of that function.
        Aber vielleicht gilt das nicht für Konstruktoren. Hab ich noch nie probiert. Seltsam.

        Aber vielleicht hilft das weiter:

        Handling Returns: It is possible to execute a return() statement inside an included file in order to terminate processing in that file and return to the script which called it. Also, it's possible to return values from included files. You can take the value of the include call as you would a normal function.

        Kommentar


        • #5
          Nee, nee, Leute, was soll denn das werden. Lese nochmals nach, was include mit Argumente, die http://... enthalten, macht dann solltet ihr euch nicht mehr über das Ergebnis wundern

          Es wird nämlich geparst (selbst wenn auf dem selben Server, als eigenständiger Prozess) und gibt als Ergebnis entweder HTML-Ausgaben bzw. return von Fkt. zurück, wenn es welche gibt, oder einfach 1 (in diesem Fall) wenn der Link existiert und keine weitere Ausgaben oder Funktionsreturn. Nach dem Parsen sind die Var. doch alle futsch.
          Zuletzt geändert von asp2php; 05.09.2004, 12:52.

          Kommentar


          • #6
            Lese nochmals nach, was include mit Argumente, die http://... enthalten, macht
            Uppsss .... Das http:// hatte ich übersehen. Dann ist ja alles klar.

            Kommentar


            • #7
              schönen dank schon mal

              doch ich habe noch nen problem.
              ich include files immer mit nem absoluten pfad. doch das klappt hier nicht.
              PHP-Code:
              include("/test/include/menue.inc.php"); 
              doch wenn ich es so mache:
              PHP-Code:
              include("../include/menue.inc.php"); 
              klappt das bei ein paar Seiten, doch bei ein paar nicht, weil ich da dann in ganz anderen ordner-ebenen bin.

              hat da jemand rat???

              Kommentar


              • #8
                als Coder musst du immer wissen wo dein aktueller Script sich aktuell befindet und includiert mit entsprechende ../ Angaben. Wenn du das nicht schaffst, dann kann keiner dir helfen . Falls du den Umgang damit noch nicht beherrscht, hier ein kleines Bsp. von mir

                Verzeichnis:
                web
                web/page/1
                web/inc/cls

                - du befindest dich im web und willst x.php vom web/inc/cls includieren:
                include(./inc/cls/x.php)

                - du befindest dich im web/page/1 und willst x.php vom web/inc/cls includieren: include(../../inc/cls/x.php)

                alles klar?

                Kommentar


                • #9
                  ja

                  ja klar ist mir das klar, doch dann muss ich ja den pfad abfragen mit $_Server['PHP_SELF'] dann mit explode zerstückeln und das array counten, damit ich weiß, wie tief ich bin. dem entsprechend dann die ../ davor setzen lassen.

                  nagut. dachte es gibt hier noch ne andere möglichkeit.

                  ander frage:
                  gibt es nen unterschied zwischen "../.." und "./." oder ist das geschmackssache. verwende nämlich immer die zwei punkte.

                  gruß sven.

                  Kommentar


                  • #10
                    du kennst den Umgang mit Verzeichnisse doch nicht richtig

                    ./ = aktuelles Verzeichnis
                    ../ = eine Ebene zurück (entspricht cd .. )

                    Kommentar

                    Lädt...
                    X