Start · Sprachen · PHP · Referenz · xmlwriter_end_comment

xmlwriter_end_comment

Funktion

Beendet einen zuvor mit <code>xmlwriter_start_comment()</code> gestarteten XML-Kommentar und schreibt das schließende <code>--&gt;</code>-Tag.

seit PHP 5.1.2 Kategorie: xml

Signatur

xmlwriter_end_comment(XMLWriter $writer): bool

Beschreibung

xmlwriter_end_comment() schließt einen XML-Kommentar-Block, der zuvor mit xmlwriter_start_comment() geöffnet wurde. Die Funktion schreibt die abschließende Zeichenfolge --> in den internen Puffer des XMLWriter-Objekts.

Typischerweise wird zunächst xmlwriter_start_comment() aufgerufen, dann der Kommentartext per xmlwriter_write_raw() eingefügt und anschließend der Block mit xmlwriter_end_comment() geschlossen. Alternativ kann für einzeilige Kommentare die Kurzform xmlwriter_write_comment() verwendet werden, die Start, Inhalt und Ende in einem Schritt erledigt.

Diese Funktion ist sinnvoll, wenn der Kommentarinhalt dynamisch zusammengesetzt werden muss oder wenn Kommentare mehrzeiligen Text enthalten sollen, der schrittweise erzeugt wird.

Die prozedurale Variante erwartet als ersten Parameter das XMLWriter-Ressourcen- bzw. Objekt-Handle. In der objektorientierten Schreibweise steht die Methode $writer->endComment() zur Verfügung.

Parameter

Name Typ Default Beschreibung
$writer Pflicht XMLWriter Das XMLWriter-Objekt (bzw. die Ressource in PHP < 8.0), auf das die Operation angewendet wird.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false wenn kein offener Kommentar vorhanden ist oder ein interner Fehler aufgetreten ist.

Beispiele

Kommentar manuell öffnen, befüllen und schließen

<?php
$writer = new XMLWriter();
$writer->openMemory();
$writer->setIndent(true);

$writer->startDocument('1.0', 'UTF-8');
$writer->startElement('root');

// Kommentar manuell öffnen
$writer->startComment();
$writer->text(' Dies ist ein mehrzeiliger\n     XML-Kommentar ');
$writer->endComment(); // Kommentar schließen

$writer->endElement();
$writer->endDocument();

echo $writer->outputMemory();
<?xml version="1.0" encoding="UTF-8"?> <root> <!-- Dies ist ein mehrzeiliger XML-Kommentar --> </root>

Vergleich: writeComment() vs. start/endComment()

<?php
$writer = new XMLWriter();
$writer->openMemory();
$writer->setIndent(true);

$writer->startDocument('1.0', 'UTF-8');
$writer->startElement('config');

// Kurzform für einfache Kommentare
$writer->writeComment(' Generiert am ' . date('Y-m-d') . ' ');

// Langform für dynamischen Inhalt
$items = ['Wert A', 'Wert B', 'Wert C'];
$writer->startComment();
$writer->text(' Verfügbare Werte: ' . implode(', ', $items) . ' ');
$writer->endComment();

$writer->endElement();
$writer->endDocument();

echo $writer->outputMemory();
<?xml version="1.0" encoding="UTF-8"?> <config> <!-- Generiert am 2024-01-15 --> <!-- Verfügbare Werte: Wert A, Wert B, Wert C --> </config>

// Wichtig · Fallstricke

Achtung: XML-Kommentare dürfen die Zeichenfolge -- (doppelter Bindestrich) nicht enthalten, da dies laut XML-Spezifikation nicht erlaubt ist. xmlwriter_end_comment() validiert den Inhalt nicht automatisch — ungültiger Inhalt kann zu einem nicht wohlgeformten XML-Dokument führen.

Ab PHP 8.0 wird der Parameter $writer als XMLWriter-Objekt übergeben; in PHP 7 und früher war es eine Ressource. Die objektorientierte Entsprechung lautet XMLWriter::endComment().