mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 08.12.2016 23:40 Benutzername: Passwort: Auto-Login

Thema: [PHP] ungewollte Objekthexerei vom 16.08.2004


Neues Thema eröffnen   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten. MGi Foren-Übersicht -> Programmierung -> [PHP] ungewollte Objekthexerei
Autor Nachricht
Account gelöscht
Threadersteller


Ort: -
Alter: -
Verfasst Mo 16.08.2004 22:33
Titel

[PHP] ungewollte Objekthexerei

Antworten mit Zitat Zum Seitenanfang

So. Voller Wut habe ich einen Fehler nach drei Tagen zeilenweises rumprobieren bis
an seinen Ursprung zurückverfolgen können. Vielleicht ist mein Brett vor dem Kopf
mittlerweile so dick, dass ich hier einen Stolperstein eingebaut hab', der mir im Grab
noch peinlich sein wird. ES SIEHT ABER AUS WIE EIN VERF... BUG.

Folgendes Szenario: Ich habe einen Templateparser, der vereinfacht XML-Templates nach
bestimmten Tags abgrast. Beim Auffinden wird mittels einer Callback-Funktion eine gleichnamige
Methode der Parserklasse aufgerufen, ganz einfach mittels:

Code:

private   function gsCallBack() {
      // }}}
      // {{{ gs-tag initiierung
      /**
       *   Übergabe des containers an entsprechende
       * Callback-Funktionen für gstag-Definitionen
       */
      $methodName=str_replace(":","_", $this->container[0]["tag"]);
      
      if (method_exists($this, $methodName)) {
          call_user_func(array(&$this,$methodName));
      }
      else {
          echo "<h2 style='color:red'>".$methodName.": ";
          echo "Funktionsaufruf fehlgeschlagen!</h2>";
      }
      
   }

man kann sehen, dass ich - nachdem ich merkte, worans lag, eine kleine abfrage eingebaut,
die folgendes liefert, wenn die besagte methode einer kindklasse der parserklasse
angehört (bspw.: class news extends parser { }:




ABER JETZT KOMMTS:

1) Eine andere Methode anderen Namens wird ohne murren ausgeführt.
2) Setze ich die Methode in die Basisklasse, so wird die ebenfalls ohne murren ausgeführt.

Hat so etwas schonmal jemand erlebt?

ProForma hier die beiden Codeseiten, die werden aber ohne ein wenig
Einarbeitung nicht viel bringen, daher nur die Frage, OB so etwas schon einmal
akut wurde, oder ob ich einfach ein grundsätzliches Detail außer acht gelassen habe!?

basisklasse - kindklasse
 
Account gelöscht
Threadersteller


Ort: -
Alter: -
Verfasst Mo 16.08.2004 23:28
Titel

Antworten mit Zitat Zum Seitenanfang

AARGH!!!!

Bin ich ein Superidiot!!! Kurz vorm Einschlafen wird mir meine geistige Behinderung klar:
Code:

$className=get_class($this);
          $evalStr="\$this->parser=new ".$className."();";
          eval($evalStr);
          $this->parser->VH=&$this->VH;
          $this->parser->gsParseArray($this->container);
          $this->output.=$this->parser->output; 


Ich hab einfach vergessen, bei verschachtelten Elemente den richtigen Klassennamen für die Rekursion zu nutzen: Hier stand vorher immer nur der Name der Basisklasse.

Au mann. Da zweifelst du Stunden und Tage an deinem Verstand, und - nach dem du schon resignierst und das Orakel gefragt hast, fällt es dir wie Schuppen aus den Haaren...

trotzdem danke Lächel
 
Anzeige
Anzeige
Sarky

Dabei seit: 29.06.2002
Ort: Düsseldorf
Alter: 34
Geschlecht: Männlich
Verfasst Mo 16.08.2004 23:34
Titel

Antworten mit Zitat Zum Seitenanfang

Schön zu wissen, daß es noch andere Leute gibt die sich die Tage und Nächte damit um die Ohren schlagen irgendeine dämliche Nadel im Heuhaufen zu finden, von der man nicht mal weiß wie sie aussieht... Lächel

Ich brüte auch gerade schon wieder über einem komischen Problem... das wird mal wieder eine lange Nacht *seufz*


Zuletzt bearbeitet von Sarky am Di 17.08.2004 02:23, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
Account gelöscht
Threadersteller


Ort: -
Alter: -
Verfasst Mo 16.08.2004 23:40
Titel

Antworten mit Zitat Zum Seitenanfang

Poste doch mal, vielleicht bekommt der Thread doch noch nen Sinn Ooops
 
Sarky

Dabei seit: 29.06.2002
Ort: Düsseldorf
Alter: 34
Geschlecht: Männlich
Verfasst Di 17.08.2004 02:25
Titel

Antworten mit Zitat Zum Seitenanfang

Hat sich erledigt, nach einer erquickenden Runde WarCraft III um den Kopf freizubekommen habe ich die Lösung gefunden.
Da sich Dein Problem auch gelöst hat mache ich hier also mal dicht. Lächel

# Thread geschlossen
  View user's profile Private Nachricht senden
 
Ähnliche Themen Ungewollte Banner auf Homepage
Leichter Farbverlauf und ungewollte Farbstufungen
[CSS] ungewollte Umbrüche beim floaten
Giv.-Datei wirft ungewollte Kontur auf der Website !
Ungewollte (Vektor?)Linien beim Druck von Corel-GIF
[PHP] Was will mir PHP damit sagen?? Hilfe Bitte! Wichtig!
Neues Thema eröffnen   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.