Signatur
Beschreibung
CommonMark\Node\Code ist ein Knoten im Abstract Syntax Tree (AST) der CommonMark-Erweiterung für PHP. Er entspricht einem Inline-Code-Span, der in Markdown mit einfachen oder mehrfachen Backticks umschlossen wird (z. B. `inline code` oder ``code``).
Der Knoten enthält den reinen Text des Code-Spans als Literal-Wert. Im Gegensatz zu CommonMark\Node\CodeBlock, der eigenständige Codeblöcke (eingezogen oder durch Zaunpfosten begrenzt) repräsentiert, steht Code immer innerhalb eines Fließtextes (Inline-Kontext).
Typische Anwendungsfälle sind das programmatische Erstellen oder Traversieren eines CommonMark-ASTs: Man kann Code-Knoten erzeugen, ihnen über die literal-Eigenschaft einen Wert zuweisen und sie als Kindknoten in einen Paragraphen oder anderen Inline-Container einhängen. Beim Parsen eines Markdown-Dokuments liefert der Parser solche Knoten automatisch.
- Beim Parsen: Der Parser erzeugt automatisch
Code-Knoten für alle Backtick-umschlossenen Inline-Abschnitte. - Beim Rendern: Der HTML-Renderer gibt den Inhalt als
<code>...</code>aus. - Beim AST-Aufbau: Man kann
Code-Knoten manuell instanziieren und in den Baum einfügen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $literal | string | Optionaler Textwert des Inline-Code-Spans, der dem Knoten direkt bei der Instanziierung zugewiesen wird. Kann auch nachträglich über die öffentliche Eigenschaft literal gesetzt werden. |
Rückgabewert
Beispiele
Inline-Code-Knoten manuell erstellen und in einen Absatz einfügen
<?php
use CommonMark\Node\Document;
use CommonMark\Node\Paragraph;
use CommonMark\Node\Code;
use CommonMark\Node\Text;
use CommonMark\CQL;
// Neues Dokument aufbauen
$document = new Document();
$paragraph = new Paragraph();
$document->appendChild($paragraph);
// Text vor dem Code-Span
$text = new Text();
$text->literal = 'Verwende die Funktion ';
$paragraph->appendChild($text);
// Inline-Code-Knoten erstellen
$code = new Code();
$code->literal = 'array_map()';
$paragraph->appendChild($code);
// Text nach dem Code-Span
$text2 = new Text();
$text2->literal = ' für diesen Zweck.';
$paragraph->appendChild($text2);
// Rendern
$renderer = new CommonMark\HtmlRenderer();
echo $renderer->renderDocument($document);
Geparsten AST nach Code-Knoten durchsuchen und Literale ausgeben
<?php
use CommonMark\Parser;
use CommonMark\Node\Code;
$markdown = 'Nutze `strlen()` und `strpos()` für String-Operationen.';
$parser = new Parser();
$document = $parser->parse($markdown);
// Alle Code-Knoten im AST finden
$walker = $document->walker();
while ($event = $walker->next()) {
$node = $event->getNode();
if ($node instanceof Code && $event->isEntering()) {
echo 'Inline-Code gefunden: ' . $node->literal . PHP_EOL;
}
}
// Wichtig · Fallstricke
Abgrenzung zu CodeBlock: Verwechsle CommonMark\Node\Code (Inline-Code, Backtick-Span) nicht mit CommonMark\Node\CodeBlock (abgesetzter Codeblock mit optionalem Info-String für die Sprache). Code-Knoten haben keine info-Eigenschaft.
Eigenschaft literal: Der Textinhalt wird über die öffentliche Eigenschaft literal gelesen und geschrieben. Beim Parsen wird der Backtick-umschlossene Inhalt automatisch als Literal gesetzt; führende und abschließende Leerzeichen werden gemäß CommonMark-Spezifikation normalisiert.
Erweiterung: Diese Klasse stammt aus der PHP-Erweiterung commonmark (PECL), die auf der C-Bibliothek cmark basiert. Sie ist nicht mit dem Composer-Paket league/commonmark zu verwechseln, das eine eigene Klassenhierarchie mitbringt.