Hi internals, I'd like to open discussion on a new RFC, "Native Markup Expressions":
RFC: https://wiki.php.net/rfc/native_markup_expressions Implementation (with tests): https://github.com/php/php-src/pull/22661 It proposes a native syntax for HTML fragments as first-class PHP expressions, akin to how the frontend community has adopted JSX, with composition and escape-by-default output: class Greeting implements Markup\Html { public function __construct(public string $name) {} public function toHtml(): Markup\Html { return <> <h1 class="title">Hello, {$this->name}!</h1> <p>Welcome to PHP, where markup is a first-class expression.</p> </>; } } echo <Greeting name="Rasmus" />; // rendered HTML, values escaped Despite appearances, this is not a template language grafted onto the engine - the syntax is pure compile-time sugar. Every markup expression lowers during compilation to a plain `new` expression: $html = <button class="btn">Sign in</button>; // compiles to exactly: $html = new \Markup\Element('button', ['class' => 'btn'], ['Sign in']); The RFC already answers many anticipated questions, and I am open to making further adjustments so this can become a feature the whole community benefits from. Looking forward to your feedback. Best regards, Liam
