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

CommonMark\Node\Item

Klasse

Repräsentiert ein einzelnes Listenelement (<code>&lt;li&gt;</code>) im CommonMark-AST (Abstract Syntax Tree).

Kategorie: misc

Signatur

class CommonMark\Node\Item extends CommonMark\Node

Beschreibung

CommonMark\Node\Item ist ein Knoten im Abstract Syntax Tree des league/commonmark-Parsers und entspricht einem einzelnen Listenelement, das in HTML als <li> gerendert wird. Er ist stets Kind eines CommonMark\Node\BulletList- oder CommonMark\Node\OrderedList-Knotens.

Über die von CommonMark\Node geerbten Methoden lässt sich der Knoten im AST traversieren, manipulieren oder auslesen. So kann man beispielsweise Kindknoten (z. B. Paragraph, weitere verschachtelte Listen) hinzufügen, entfernen oder ersetzen.

Typische Anwendungsfälle sind das programmatische Erstellen von Listeneinträgen, das Analysieren geparster Dokumente sowie das Transformieren von Markdown-Inhalten in einem eigenen Renderer oder Custom-Extension.

  • Kann als Kindknoten Paragraph-, BulletList- oder OrderedList-Knoten enthalten (verschachtelte Listen).
  • Wird vom CommonMark-Parser automatisch erzeugt; kann aber auch manuell instanziiert und in einen Listenknoten eingefügt werden.

Beispiele

Listenelement aus geparsten Markdown auslesen

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

$parser = new Parser();
$document = $parser->parse("- Erstes Element\n- Zweites Element\n- Drittes Element");

// Ersten BulletList-Knoten finden
$list = null;
foreach ($document->children() as $child) {
    if ($child instanceof BulletList) {
        $list = $child;
        break;
    }
}

if ($list) {
    foreach ($list->children() as $item) {
        if ($item instanceof Item) {
            // Ersten Textinhalt des Items ausgeben
            echo $item->firstChild->firstChild->getLiteral() . PHP_EOL;
        }
    }
}
Erstes Element Zweites Element Drittes Element

Listenelement programmatisch erstellen und in eine BulletList einfügen

<?php
use CommonMark\Node\Item;
use CommonMark\Node\BulletList;
use CommonMark\Node\Paragraph;
use CommonMark\Node\Text;
use CommonMark\Renderer\HtmlRenderer;

// Neues Listenelement mit Text erzeugen
$item = new Item();
$paragraph = new Paragraph();
$text = new Text();
$text->setLiteral('Neues Element');
$paragraph->appendChild($text);
$item->appendChild($paragraph);

// In eine BulletList einbetten
$list = new BulletList();
$list->appendChild($item);

// Rendern
$renderer = new HtmlRenderer();
echo $renderer->renderNode($list);
<ul> <li>Neues Element</li> </ul>

// Wichtig · Fallstricke

Die Klasse CommonMark\Node\Item stammt aus der PHP-Extension commonmark (PECL) und ist nicht mit dem Composer-Paket league/commonmark zu verwechseln, das eine reine PHP-Implementierung darstellt. API-Details und Methoden können je nach verwendeter Version leicht abweichen.

Beim manuellen Aufbau eines AST muss die Baumstruktur korrekt eingehalten werden: Item darf nur direkt unterhalb eines BulletList- oder OrderedList-Knotens stehen; andernfalls kann der Renderer ein unerwartetes Ergebnis liefern oder eine Exception werfen.