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

CommonMark\Node\Code

Klasse

Repräsentiert einen Inline-Code-Span (z. B. <code>`code`</code>) im CommonMark-AST.

Kategorie: misc

Signatur

class CommonMark\Node\Code extends CommonMark\Node

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

Typ

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);
<p>Verwende die Funktion <code>array_map()</code> für diesen Zweck.</p>

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;
    }
}
Inline-Code gefunden: strlen() Inline-Code gefunden: strpos()

// 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.