fatal error

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

  • fatal error

    Bis jetzt dachte ich, dass ich die OOP mit PHP 5 ganz gut verstanden habe.
    Aber nun habe ich ein Problem, woraus ich einfach nicht schlau werde:

    Bei einem neuen Eintrag ins GB, Forum usw. wird das in einer extra Tabelle (Aktuell) eingetragen. Auf den gewünschten Seiten lese ich die Tabelle aus, und der User sieht auf einmal, was es so neues gibt. Damit keine Verwirrung entsteht und die Daten in meinem "Aktuell Modul" sofort verfügbar sind und auch angezeigt werden, lade ich die Seite nach einem Eintrag mit Javascript neu.

    Dieses wird über eine einfache Methode erledigt.


    SUBMENUEPUNKT wird schon weit vorher definiert, und der Wert kommt aus einer Tabelle. In der Tabelle habe ich quasi meine ganze Navigation.
    Die Methode queryHolen() liefert mir den aktuellen Query-String der aktuellen Seite, den ich dann weiterverarbeiten kann, z.B. in einen Link
    PHP-Code:
    protected function seiteNeuLaden($menuepunkt SUBMENUEPUNKT$query ''){

        echo 
    '<script type="text/javascript" language="javascript">
              /*<![CDATA[*/
              location.href=\'' 
    $this->queryHolen($menuepunktfalsefalse,
          
    true'&') . $query '\';
              /*]]>*/
              </script>'
    ;

      } 
    Rufe ich nun diese Methode auf erhalte ich einen fatal_error:
    PHP-Code:
    Fatal errorUsing $this when not in object context in /[Pfadangabe]/class.Basis.php on line 325 
    Zeile 325 ist genau die Zeile wo $this->queryHolen() aufgerufen wird.
    Nun habe ich versucht mich schlau zu machen, und anscheinend heißt der Fehler, dass ich versuche $this außerhalb einer Klasse aufzurufen. Allerdings befinde ich mich in der Klasse Basis und beide Methoden sind in der Klasse Basis definiert. In diesem Fall wird die Methode allerdings von einer Kindklasse aus ausgerufen.


    Momentan stehe ich echt auf der Leitung was den Fehler angeht.
    Kann mir bitte jemand helfen bzw. einen Tipp geben was da los ist?


    Edit: in der Zeile location.href... hat er mir 2 \ unterschlagen. Aber das Problem ist ja bereits bekannt....
    Zuletzt geändert von pPanther; 23.07.2007, 21:33.

  • #2
    Du redest von KindKlasse? Wie ist deine Klassenstruktur aufgebaut?

    Kommentar


    • #3
      Die Kindfunktion ist nicht zufällig static?
      Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

      Kommentar


      • #4
        Generell habe ich eine Basisklasse (class.Basis.php) in der sind grundlegende Methoden verankert die man so gut wie überall brauchen kann. Von der Basisklasse werden so gut wie alle anderen Klassen abgeleitet.
        z.B ne Interaktiv Klasse, die ist für das Prüfen von Benutzereingaben usw.
        Dazu habe ich noch ne SQL Wrapper Klasse und noch mehrere andere Klassen für verschiedene Seiten.
        class.Gaestebuch
        class.Forum usw.

        Die ganzen Klassen werden über die index.php bei bedarf (__autoload) geladen und instanziert. Also meine ganze Seite läuft nur über die index.php.
        Natürlich werden sämtliche relevanten Daten geprueft und maskiert/demaskiert

        Der Betrachter sieht sozusagen eine HP in "Modulbauweise". Jedes Modul wird eben individuell mit dem richtigen Inhalt gefuellt und danach platziert. Modul Login, Modul Aktuell usw.


        Um es das ganze vielleicht besser zu verstehen: Ich habe mir vor ein paar Monaten ein Buch über professionelles HP entwickeln gekauft. Darin erläutert der Autor Schriff für Schritt den Aufbau einer HP. Die HP liegt auf einer CD bei und darf frei verwendet werden. Ich habe dieses "Projekt" genützt, um mal endlich "richtig" PHP zu lernen und endlich die OOP zu kapieren.
        Und nun bin ich ordentlich am Ausbauen. Bis jetzt lief ja alles wunderbar.


        Sollte jemand noch mehr Infos brauchen, bitte melden. Ich kann auch gerne die relevanten Klassen verlinken.


        Hier ein Link, wo man die HP in ihrer Version 1.0 sehen kann (Autorenseite)
        webflips.de

        Kommentar


        • #5
          Original geschrieben von tontechniker
          Die Kindfunktion ist nicht zufällig static?

          Doch public static.

          Hier ein Auszug aus der Klasse Aktuell (Kindklasse von Basis)
          PHP-Code:
          public static function neuerEintrag($dbh$Titel$Kategorie SUBMENUEPUNKT){
          .......
          .......
          // falls das Modul linksseitig liegt, wird Seite nach neuem Eintrag neu geladen, um
              // Eintrag gleich sichtbar zu machen.
              
          if(Basis::modulseite(AKTUELL$dbh) == 'links'){
                
          Basis::seiteNeuLaden();
              } 

          Kommentar


          • #6
            Original geschrieben von pPanther
            Hat das public static was zu bedeuten?
            http://www.php.net/manual/de/language.oop5.static.php:
            Auf statische Eigenschaften kann nicht durch das Objekt mittels des Pfeiloperators -> zugegriffen werden.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              MHM, wie kann sowas passieren? Ich hab echt keine Ahnung wie das static da hingekommen ist.

              static rausgenommen und schon läufts.


              Danke!

              Kommentar

              Lädt...
              X