Start · Sprachen · PHP · Referenz · CommonMark\Node\BlockQuote

CommonMark\Node\BlockQuote

Klasse

Repräsentiert ein Blockzitat (<code>&gt;</code>-Syntax) als Knoten im CommonMark-Dokumentbaum.

Kategorie: misc

Signatur

class CommonMark\Node\BlockQuote extends CommonMark\Node

Beschreibung

CommonMark\Node\BlockQuote ist Teil der CommonMark-Erweiterung für PHP und repräsentiert einen Blockzitat-Knoten (englisch: Block Quote) im abstrakten Syntaxbaum (AST) eines CommonMark-Dokuments. In CommonMark-Markdown wird ein Blockzitat durch eine oder mehrere Zeilen eingeleitet, die mit dem Zeichen > beginnen.

Instanzen dieser Klasse entstehen typischerweise beim Parsen eines Markdown-Dokuments mit CommonMark\Parser oder können manuell erzeugt und in einen bestehenden Baum eingefügt werden. Als Knoten kann BlockQuote Kinder enthalten – zum Beispiel Absätze (CommonMark\Node\Paragraph) oder weitere Blockzitate (verschachtelte Blockzitate).

Der Knoten lässt sich in einem Baum traversieren, manipulieren oder rendern. Zum Rendern des gesamten Baums steht CommonMark\Render\HTML, CommonMark\Render\Latex oder CommonMark\Render\Man zur Verfügung. Durch programmatisches Hinzufügen von BlockQuote-Knoten lässt sich Markdown-Ausgabe strukturiert erzeugen, ohne direkt Rohtext schreiben zu müssen.

Die Klasse erbt von CommonMark\Node und stellt damit alle allgemeinen Knoten-Methoden bereit, etwa appendChild(), prependChild(), insertAfter(), insertBefore() sowie den Zugriff auf Eltern- und Geschwisterknoten über die Eigenschaften parent, previous und next.

Parameter

Name Typ Default Beschreibung
$ Der Konstruktor von CommonMark\Node\BlockQuote erwartet keine Parameter. Ein neuer, leerer Blockzitat-Knoten wird direkt mit new CommonMark\Node\BlockQuote() erzeugt.

Beispiele

Blockzitat aus geparsten Markdown-Dokument traversieren

<?php
use CommonMark\Parser;
use CommonMark\Node\BlockQuote;
use CommonMark\Node\Document;

$markdown = "> Dies ist ein Blockzitat.\n> Mit mehreren Zeilen.";

$parser = new Parser();
$document = $parser->parse($markdown);

// Alle Knoten im Baum traversieren
foreach ($document->children() as $node) {
    if ($node instanceof BlockQuote) {
        echo "Blockzitat gefunden!" . PHP_EOL;
        foreach ($node->children() as $child) {
            echo get_class($child) . PHP_EOL;
        }
    }
}
Blockzitat gefunden! CommonMark\Node\Paragraph

Blockzitat programmatisch erstellen und als HTML rendern

<?php
use CommonMark\Node\Document;
use CommonMark\Node\BlockQuote;
use CommonMark\Node\Paragraph;
use CommonMark\Node\Text;
use CommonMark\Render\HTML;

$document = new Document();

$blockquote = new BlockQuote();
$paragraph  = new Paragraph();
$text       = new Text();
$text->literal = 'Das ist ein programmatisch erzeugtes Blockzitat.';

$paragraph->appendChild($text);
$blockquote->appendChild($paragraph);
$document->appendChild($blockquote);

$renderer = new HTML();
echo $renderer->render($document);
<blockquote> <p>Das ist ein programmatisch erzeugtes Blockzitat.</p> </blockquote>

// Wichtig · Fallstricke

Die CommonMark-Erweiterung (krakjoe/cmark) muss über PECL installiert sein und ist nicht standardmäßig in PHP enthalten. Vor der Nutzung sollte geprüft werden, ob extension_loaded('cmark') true zurückgibt.

Verschachtelte Blockzitate werden als Kind-BlockQuote-Knoten innerhalb eines äußeren BlockQuote-Knotens abgebildet. Beim manuellen Aufbau des Baums muss die korrekte Hierarchie eingehalten werden, da ungültige Kindknoten zu Renderingfehlern führen können.

Die API der cmark-Erweiterung kann je nach installierter Version leicht abweichen. Die offizielle Dokumentation findet sich unter github.com/krakjoe/cmark.