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

CommonMark\Node\OrderedList

Klasse

Repräsentiert eine nummerierte (geordnete) Liste im CommonMark-AST-Baum.

Kategorie: misc

Signatur

class CommonMark\Node\OrderedList extends CommonMark\Node implements CommonMark\Interfaces\IVisitable, CommonMark\Interfaces\INode

Beschreibung

CommonMark\Node\OrderedList ist ein Knoten-Typ in der PHP-Erweiterung commonmark und steht für eine nummerierte Liste im Abstract Syntax Tree (AST) eines CommonMark-Dokuments. Ein solches Listenelement entsteht, wenn Markdown-Text wie 1. Erster Punkt\n2. Zweiter Punkt geparst wird.

Die Klasse erbt von CommonMark\Node und bietet damit Zugriff auf alle Standard-Knoten-Operationen wie das Traversieren von Kindelementen (firstChild, lastChild, next, previous) sowie das Einfügen und Entfernen von Knoten. Als direktes Kind enthält ein OrderedList-Knoten typischerweise eine oder mehrere Instanzen von CommonMark\Node\Item.

Wichtige Eigenschaften sind tight (gibt an, ob die Liste eng gesetzt ist) sowie delimiter (definiert, ob der Listenmarker ein Punkt . oder eine Klammer ) ist) und start (die Startnummer der Liste, üblicherweise 1). Diese Eigenschaften können gelesen und gesetzt werden, um das Rendering zu beeinflussen.

Die Klasse ist besonders nützlich, wenn man CommonMark-Dokumente programmatisch analysiert, transformiert oder neu aufbaut – etwa um die Startnummer einer nummerierten Liste zu ändern oder Listenelemente dynamisch hinzuzufügen und zu entfernen.

Beispiele

Nummerierte Liste aus Markdown parsen und Knoten inspizieren

<?php
use CommonMark\Parser;
use CommonMark\Node\OrderedList;
use CommonMark\Node\Item;

$parser = new Parser();
$document = $parser->parse("1. Erster Punkt\n2. Zweiter Punkt\n3. Dritter Punkt");

// Durch alle Knoten des Dokuments iterieren
$walker = $document->walker();
while ($event = $walker->next()) {
    $node = $event->getNode();
    if ($node instanceof OrderedList && $event->isEntering()) {
        echo "Geordnete Liste gefunden!" . PHP_EOL;
        echo "Startnummer: " . $node->start . PHP_EOL;
        echo "Trennzeichen: " . $node->delimiter . PHP_EOL;
        echo "Eng gesetzt (tight): " . ($node->tight ? 'ja' : 'nein') . PHP_EOL;
    }
}
Geordnete Liste gefunden! Startnummer: 1 Trennzeichen: . Eng gesetzt (tight): ja

Programmatisch eine nummerierte Liste erstellen und rendern

<?php
use CommonMark\Node\Document;
use CommonMark\Node\OrderedList;
use CommonMark\Node\Item;
use CommonMark\Node\Paragraph;
use CommonMark\Node\Text;
use CommonMark\HtmlRenderer;

$document = new Document();

$list = new OrderedList();
$list->start = 3; // Liste beginnt bei 3
$list->tight = true;

foreach (['Dritter Punkt', 'Vierter Punkt', 'Fünfter Punkt'] as $text) {
    $item = new Item();
    $paragraph = new Paragraph();
    $paragraph->appendChild(new Text($text));
    $item->appendChild($paragraph);
    $list->appendChild($item);
}

$document->appendChild($list);

$renderer = new HtmlRenderer();
echo $renderer->renderDocument($document);
<ol start="3"> <li>Dritter Punkt</li> <li>Vierter Punkt</li> <li>Fünfter Punkt</li> </ol>

// Wichtig · Fallstricke

Erweiterung erforderlich: Die Klasse ist Teil der PECL-Erweiterung commonmark und steht nicht in der PHP-Standardbibliothek zur Verfügung. Die Erweiterung muss separat installiert werden (pecl install commonmark).

Eigenschaftszugriff: Die Eigenschaften start, tight und delimiter sind direkt als Objekt-Eigenschaften zugänglich, nicht über Getter-/Setter-Methoden. Ungültige Werte bei delimiter können zu unerwartetem Verhalten beim Rendering führen – zulässige Werte sind . (Punkt) und ) (Klammer).

Tight-Modus: Eine als tight markierte Liste erzeugt beim Rendern keine <p>-Tags um den Inhalt der Listenelemente. Dies beeinflusst maßgeblich das HTML-Ausgabeformat.