Liam Hammett hat eine Diskussion über ein RFC-Proposal zu Native Markup Expressions eröffnet, das JSX-inspirierte Syntax für HTML-Fragmente direkt in PHP einführt.
Der Vorschlag bringt kompakte Syntax für Definition und Komposition von HTML-Markup als Sprachausdrücke. Kleingeschriebene Tag-Namen repräsentieren literal HTML-Elemente, während großgeschriebene Tag-Namen, Namespace-Trennzeichen oder statische Methoden-Verweise Komponenten bezeichnen. Alle eingebetteten Ausdrücke werden standardmäßig aus Sicherheitsgründen maskiert.
Ein `<button class="btn">Sign in</button>`-Ausdruck wird zur Compile-Zeit in `new \Markup\Element('button', ['class' => 'btn'], ['Sign in'])` übersetzt. Das bedeutet, die Bedeutung von Markup wird während Compilation entschieden, nicht zur Laufzeit. Komponenten, die das `Markup\Html`-Interface implementieren, können wie `<Greeting name="Rasmus" />` aufgerufen und geben automatisch ihren Rückgabewert aus.
Eine funktionierende Implementierung mit Tests ist in Pull-Request php/php-src#22661 verfügbar.
Schlüsseldesign-Entscheidungen in der Diskussion umfassen die Großschreibungs-Heuristik zur Unterscheidung von Komponenten und HTML-Elementen. Garrett W. hinterfragte, ob dieser Ansatz – von JavaScripts JSX übernommen, wo klein geschrieben HTML und großgeschrieben Komponenten bedeutet – für PHP angemessen ist, da PSR-4 nicht bindend ist und kleingeschriebene Klassennamen legal sind. Liam antwortete, dass die Heuristik stille Fehler aus Tippfehlern verhindert, Compile-Zeit-Auflösung ohne Autoloader-Overhead erlaubt und Leistungsvorteil für den häufigen Fall von überwiegend HTML mit verstreuten Komponenten bietet.
Andere Diskussionsteilnehmende, einschließlich Edmond Dantes, schlugen vor, dass PHP von generalisierten Parser-Hooks profitieren könnte, die Erweiterungen ermöglichen, benutzerdefinierte DSL-Syntaxen zu definieren, anstatt eine einzelne Markup-Syntax festzulegen. Edmond bemerkte, dass solche Erweiterbarkeit SQL-ähnliche LINQ-Ausdrücke und attributbasierte Metaprogrammierung-Muster ermöglichen könnte. Liam räumte ein, dass dies separate Überlegungen zum aktuellen RFC-Umfang sind.