The Daily Commit · Edición de sección Portada PHP AI Dev EN DE FR ES

The Php Times

RFC Watch — Ecosistema

RFC: Expresiones de marcado nativo en PHP


Liam Hammett propone una sintaxis inspirada en JSX para fragmentos HTML como expresiones PHP.

PHP INTERNALS ([RFC]/[VOTE]), 15 de julio de 2026 seleccionado por Heiko

Las expresiones de marcado se compilan en llamadas simples `new` en tiempo de compilación, soportan composición de componentes con nombres de etiqueta capitalizados y escapan las salidas por defecto. La discusión se centra en heurísticas de resolución de componentes y extensibilidad del analizador.

Liam Hammett ha abierto una discusión sobre un RFC que propone expresiones de marcado nativo, una característica que añade sintaxis inspirada en JSX para fragmentos HTML directamente en PHP.

La propuesta introduce una sintaxis compacta para definir y componer marcado HTML como expresiones de lenguaje. Los nombres de etiqueta en minúsculas representan elementos HTML literales, mientras que los nombres capitalizados, separadores de espacio de nombres o referencias de método estático denotan componentes. Todas las expresiones incrustadas se escapan por defecto para la seguridad.

Una expresión `<button class="btn">Sign in</button>` se compila en `new \Markup\Element('button', ['class' => 'btn'], ['Sign in'])` en tiempo de compilación. Esto significa que el significado del marcado se determina durante la compilación, no en tiempo de ejecución. Los componentes que implementan la interfaz `Markup\Html` pueden invocarse como `<Greeting name="Rasmus" />` y muestran automáticamente su valor de retorno.

Una implementación funcional con pruebas está disponible en la solicitud de extracción php/php-src#22661.

Las decisiones de diseño clave bajo discusión incluyen la heurística de capitalización para distinguir componentes de elementos HTML. Garrett W. cuestionó si este enfoque —tomado del JSX de JavaScript, donde minúsculas significa HTML y mayúsculas significa componente— es apropiado para PHP, dado que PSR-4 no es un estándar vinculante y los nombres de clase en minúsculas son legales. Liam respondió que la heurística previene errores silenciosos causados por errores tipográficos, permite resolución en tiempo de compilación sin gastos generales del cargador automático, y proporciona una ventaja de rendimiento para el caso común de principalmente HTML con componentes dispersos.

Otros participantes en la discusión, incluyendo Edmond Dantes, sugirieron que PHP podría beneficiarse de ganchos del analizador generalizados que permitan a las extensiones definir sintaxis DSL personalizadas en lugar de bloquear una única sintaxis de marcado. Edmond señaló que tal extensibilidad podría permitir expresiones LINQ tipo SQL y patrones de metaprogramación basados en atributos. Liam reconoció que estas son consideraciones separadas del alcance actual del RFC.

Leer la fuente original (en inglés) ↗

Valora este artículo: 0

Tribuna de lectores

Aún no hay aportaciones — abre el debate.

← Ecosistema — Page B1

"All the Code That's Fit to Ship" · The Daily Commit · Edición de pantalla · Información legal · Política de privacidad