The Daily Commit · Édition de rubrique La une PHP AI Dev EN DE FR ES

The Php Times

RFC Watch — Écosystème

RFC : Expressions de balisage natives en PHP


Liam Hammett propose une syntaxe inspirée de JSX pour les fragments HTML en tant qu'expressions PHP.

PHP INTERNALS ([RFC]/[VOTE]), 15 juillet 2026 sélectionné par Heiko

Les expressions de balisage se compilent en appels `new` simples à la compile-time, supportent la composition de composants avec noms de balises capitalisés et échappent les sorties par défaut. La discussion porte sur les heuristiques de résolution de composants et l'extensibilité du parseur.

Liam Hammett a ouvert une discussion sur un RFC proposant des expressions de balisage natives, une fonctionnalité qui ajoute une syntaxe inspirée de JSX pour les fragments HTML directement dans PHP.

La proposition introduit une syntaxe compacte pour définir et composer du balisage HTML comme expressions de langage. Les noms de balise en minuscules représentent des éléments HTML littéraux, tandis que les noms capitalisés, les séparateurs d'espace de noms ou les références de méthodes statiques désignent des composants. Toutes les expressions intégrées sont échappées par défaut pour la sécurité.

Une expression `<button class="btn">Sign in</button>` se compile en `new \Markup\Element('button', ['class' => 'btn'], ['Sign in'])` au moment de la compilation. Cela signifie que la signification du balisage est déterminée lors de la compilation, non à l'exécution. Les composants implémentant l'interface `Markup\Html` peuvent être invoqués comme `<Greeting name="Rasmus" />` et affichent automatiquement leur valeur de retour.

Une implémentation fonctionnelle avec des tests est disponible dans la pull request php/php-src#22661.

Les décisions de conception clés en discussion incluent l'heuristique de capitalisation pour distinguer les composants des éléments HTML. Garrett W. a remis en question si cette approche – empruntée au JSX de JavaScript, où les minuscules signifient HTML et les majuscules signifient composant – convient à PHP, étant donné que PSR-4 n'est pas un standard contraignant et que les noms de classe en minuscules sont légaux. Liam a répondu que l'heuristique prévient les erreurs silencieuses dues aux fautes de frappe, permet la résolution au moment de la compilation sans frais généraux du chargeur automatique et offre un avantage de performance pour le cas courant de balisage surtout HTML avec des composants dispersés.

D'autres participants à la discussion, dont Edmond Dantes, ont suggéré que PHP pourrait bénéficier de hooks de parseur généralisés permettant aux extensions de définir des syntaxes DSL personnalisées plutôt que de verrouiller une seule syntaxe de balisage. Edmond a noté que cette extensibilité pourrait permettre des expressions LINQ de type SQL et des modèles de métaprogrammation basés sur les attributs. Liam a reconnu que ce sont des considérations distinctes du domaine actuel du RFC.

Lire la source originale (en anglais) ↗

Évaluer cet article : 0

Tribune des lecteurs

Pas encore de contributions — lance le débat.

← Écosystème — Page B1

"All the Code That's Fit to Ship" · The Daily Commit · Édition écran · Mentions légales · Politique de confidentialité