document->transform; warum wird this->content nicht ersetzt?

Im Entwickler-Forum können Implementierungsdetails sowie Alternativen der Umsetzung diskutiert werden. // Here, developers can discuss implementation details of features of their projects.
Antworten
dingsda
Beiträge: 49
Registriert: 03.02.2014, 04:00:36

document->transform; warum wird this->content nicht ersetzt?

Beitrag von dingsda » 22.07.2014, 11:04:06

hallo,

ich bin grad dabei mir die klasse document und die taglibs genauer anzuschauen.

bei der methode transform stolpere ich grad über

Code: Alles auswählen

      // create copy, to preserve it!
      $content = $this->content;
 
ich frage mich nun warum das nötig ist?

selbe frage auch für transformChildrenAndPreserveContent.

im kommentar dazu steht natürlich
Preserves the current node's internal content buffer $this->content to allow further transformations.
aber ich weiß nicht was ich mir drunter vorstellen soll. wann ist es nötig, dass der content erhalten bleibt und wann kann er überschrieben werden?

lg
dingsda

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: document->transform; warum wird this->content nicht erse

Beitrag von dr.e. » 22.07.2014, 20:56:10

Hallo dingsda,
aber ich weiß nicht was ich mir drunter vorstellen soll. wann ist es nötig, dass der content erhalten bleibt und wann kann er überschrieben werden?
Der Parser ersetzt die Tag-Definitionen in der Analyse-Phase mit Platzhaltern. Diese werden bei der Transformation mit dem jeweiligen Ergebnissen der Transformation ersetzt. Ohne die Platzhalter würde der Parser die Struktur nicht mehr korrekt zusammen setzen können. Letzteres ist auch genau der Grund, warum bei der Transformation auf kopiertem Inhalt passiert.

Sicher ist das nicht bei allen Tags notwendig, nachvollziehen lässt sich das sehr einfach am TemplateTag. Dieser Tag wird als wiederverwendbares Element für die Ausgabe von sich wiederholenden Inhalten eingesetzt. Würde ich direkt auf dem Content arbeiten, verliert der Tag nach der ersten Transformation seine Platzhalter (inkl. seiner Positionen) und alle weiteren Elemente der Liste würden den selben Inhalt tragen.

Hoffe das erklärt das Verhalten. :)
Viele Grüße,
Christian

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast