{"data":[{"id":268,"uuid":"186d16a8-f9a9-420f-9698-541b2fad8376","locale":"es","status":"published","collection":"blog","created_at":"2026-06-02T12:21:56+00:00","updated_at":"2026-06-02T12:21:56+00:00","deleted_at":null,"published_at":"2026-06-02T12:21:56+00:00","scheduled_at":null,"creator":null,"updater":null,"assigned_to":null,"title":"Comenzando con Jambo API en 5 minutos","slug":"comenzando-con-jambo-api","excerpt":"De una terminal vac\u00eda a APIs REST y GraphQL en producci\u00f3n en menos de cinco minutos \u2014 sin YAML, sin migraciones, sin controladores que andamiar. Aqu\u00ed est\u00e1 todo el flujo, comando a comando.","body":"\u003Cp\u003ELa mayor\u00eda de las gu\u00edas de inicio asumen en voz baja una tarde de configuraci\u00f3n. Jambo API se dise\u00f1\u00f3 en torno a una promesa distinta: de una terminal vac\u00eda a un CMS headless listo para producci\u00f3n en menos de cinco minutos. Sin YAML que redactar, sin boilerplate que copiar, sin paso de build que vigilar. Este es todo el flujo, paso a paso.\u003C\/p\u003E\n\n\u003Ch2\u003E1. Instalar en un comando\u003C\/h2\u003E\n\u003Cp\u003ETodo empieza aqu\u00ed:\u003C\/p\u003E\n\u003Cp\u003E\u003Ccode\u003Ecomposer create-project jambostack\/jambo-api\u003C\/code\u003E\u003C\/p\u003E\n\u003Cp\u003EEsa es toda la instalaci\u00f3n. Un solo comando descarga el proyecto, instala las dependencias y prepara la base de datos. No hay archivos de configuraci\u00f3n que editar a mano ni variables de entorno que descifrar antes de la primera ejecuci\u00f3n. Si sabes ejecutar Composer, sabes ejecutar Jambo.\u003C\/p\u003E\n\n\u003Ch2\u003E2. Crea tu primer proyecto\u003C\/h2\u003E\n\u003Cp\u003EAbre \u003Ccode\u003Ehttp:\/\/localhost:8080\u003C\/code\u003E, inicia sesi\u00f3n y crea un proyecto. Un \u0022proyecto\u0022 en Jambo es un espacio de contenido aislado, con sus propias colecciones, contenido, biblioteca de medios y tokens de API. Crear uno toma unos treinta segundos, y puedes tener tantos como quieras \u2014 uno por cliente, por entorno o por aplicaci\u00f3n.\u003C\/p\u003E\n\n\u003Ch2\u003E3. Dise\u00f1a tu esquema describi\u00e9ndolo\u003C\/h2\u003E\n\u003Cp\u003EAqu\u00ed es donde Jambo se aparta de todo CMS tradicional. Abre el \u003Cstrong\u003EStudio de Esquemas con IA\u003C\/strong\u003E y describe lo que necesitas en lenguaje natural:\u003C\/p\u003E\n\u003Cblockquote\u003E\u003Cem\u003E\u0022Necesito art\u00edculos de blog con t\u00edtulo, cuerpo, imagen de portada, una relaci\u00f3n de autor y categor\u00edas.\u0022\u003C\/em\u003E\u003C\/blockquote\u003E\n\u003Cp\u003ELa IA genera el esquema completo \u2014 tipos de campo, relaciones, reglas de validaci\u00f3n y valores por defecto sensatos. Rev\u00edsalo, haz clic en \u003Cstrong\u003EAplicar\u003C\/strong\u003E y luego en \u003Cstrong\u003EGuardar\u003C\/strong\u003E. Si prefieres construir a mano, el editor visual est\u00e1 justo al lado. En ambos casos describes una intenci\u00f3n, no escribes archivos de migraci\u00f3n.\u003C\/p\u003E\n\n\u003Ch2\u003E4. Tu API est\u00e1 activa en el instante en que guardas\u003C\/h2\u003E\n\u003Cp\u003EEn cuanto se guarda tu esquema, Jambo genera autom\u00e1ticamente los endpoints REST \u003Cem\u003Ey\u003C\/em\u003E GraphQL. Sin paso de build. Sin reiniciar el servidor. Sin generaci\u00f3n de c\u00f3digo que ejecutar. Obt\u00e9n tus datos de inmediato:\u003C\/p\u003E\n\u003Cp\u003E\u003Ccode\u003EGET \/api\/{project}\/blog_posts?locale=es\u0026status=published\u003C\/code\u003E\u003C\/p\u003E\n\u003Cp\u003ERecibes JSON limpio y paginado, con filtrado, ordenaci\u00f3n, selecci\u00f3n de idioma y expansi\u00f3n de relaciones integrados. El endpoint GraphQL est\u00e1 activo en el mismo momento, con un esquema que refleja tus colecciones exactamente.\u003C\/p\u003E\n\n\u003Ch2\u003E5. Conecta cualquier cosa\u003C\/h2\u003E\n\u003Cp\u003EComo la API es HTTP puro, funciona con lo que ya usas. Jambo tambi\u00e9n publica una especificaci\u00f3n OpenAPI generada autom\u00e1ticamente y un SDK tipado, para que tu front-end obtenga autocompletado y seguridad de tipos gratis:\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cstrong\u003ENext.js \/ React\u003C\/strong\u003E \u2014 fetch en server components o con tu capa de datos preferida.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EAstro\u003C\/strong\u003E \u2014 carga el contenido en tiempo de build para sitios totalmente est\u00e1ticos (este mismo sitio hace exactamente eso).\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EVue \/ Nuxt \/ Svelte\u003C\/strong\u003E \u2014 cualquier cosa que hable HTTP es un cliente de primera clase.\u003C\/li\u003E\n\u003C\/ul\u003E\n\n\u003Ch2\u003EY ese es todo el flujo\u003C\/h2\u003E\n\u003Cp\u003E\u003Cstrong\u003ESin migraciones que ejecutar. Sin controladores que andamiar. Sin middleware que configurar.\u003C\/strong\u003E Describiste un modelo de contenido y apareci\u00f3 una API versionada, multiling\u00fce y totalmente documentada. Los cinco minutos que acabas de invertir son los mismos tanto si prototipas un proyecto personal como si levantas infraestructura de producci\u00f3n \u2014 Jambo no te obliga a elegir entre r\u00e1pido y serio.\u003C\/p\u003E\n\u003Cp\u003EDesde aqu\u00ed, los siguientes pasos naturales son a\u00f1adir idiomas, invitar a compa\u00f1eros de equipo o apuntar un agente de IA a tu proyecto a trav\u00e9s del servidor MCP nativo. Pero la API que necesitas ya est\u00e1 funcionando.\u003C\/p\u003E","category":["tutorial"],"field_published_at":"2026-05-28T10:00:00+00:00","author_name":"Equipo Jambo","_seo":{"metaTitle":null,"metaDescription":null,"slug":"entry-268","canonicalUrl":null,"ogImage":null,"score":null,"openGraph":{"title":"Comenzando con Jambo API en 5 minutos","description":"","image":null,"type":"article","siteName":"Jambo"},"twitter":{"card":"summary","title":"Comenzando con Jambo API en 5 minutos","description":"","image":null},"structuredData":{"@context":"https:\/\/schema.org","@type":"Article","headline":"","description":"","image":null,"datePublished":"2026-06-02T12:21:56+00:00","dateModified":"2026-06-02T12:21:56+00:00"},"hreflang":{"en":"https:\/\/example.com\/blog\/entry-268?locale=en","fr":"https:\/\/example.com\/blog\/entry-268?locale=fr","es":"https:\/\/example.com\/blog\/entry-268?locale=es","ar":"https:\/\/example.com\/blog\/entry-268?locale=ar","x-default":"https:\/\/example.com\/blog\/entry-268?locale=en"}}},{"id":269,"uuid":"3fe73f86-afa5-41dc-93ea-3e31dda5c411","locale":"es","status":"published","collection":"blog","created_at":"2026-06-02T12:21:56+00:00","updated_at":"2026-06-02T12:21:56+00:00","deleted_at":null,"published_at":"2026-06-02T12:21:56+00:00","scheduled_at":null,"creator":null,"updater":null,"assigned_to":null,"title":"Por que integramos un servidor MCP en nuestro CMS","slug":"por-que-servidor-mcp-en-cms","excerpt":"Agentes de IA como Claude ahora pueden leer y escribir tu contenido directamente \u2014 sin webhooks, sin scraping, sin c\u00f3digo pegamento fr\u00e1gil. Hicimos de Jambo el primer CMS que habla el Model Context Protocol de forma nativa. Aqu\u00ed est\u00e1 el porqu\u00e9 y el c\u00f3mo.","body":"\u003Cp\u003EEl \u003Cstrong\u003EModel Context Protocol\u003C\/strong\u003E (MCP) se est\u00e1 convirtiendo r\u00e1pidamente en la forma est\u00e1ndar en que los agentes de IA hablan con herramientas externas. En lugar de que cada integraci\u00f3n reinvente su propio envoltorio de API, MCP ofrece a los agentes una manera uniforme de descubrir capacidades, inspeccionar la forma de los datos y actuar. Jambo es el primer CMS headless que implementa MCP de forma \u003Cem\u003Enativa\u003C\/em\u003E \u2014 no como un plugin, sino como una pieza de primera clase de cada proyecto.\u003C\/p\u003E\n\u003Cp\u003EEste art\u00edculo explica el problema que est\u00e1bamos resolviendo, c\u00f3mo funciona el servidor MCP de Jambo y qu\u00e9 desbloquea en la pr\u00e1ctica.\u003C\/p\u003E\n\n\u003Ch2\u003EEl problema de IA + CMS hoy\u003C\/h2\u003E\n\u003Cp\u003EConectar un asistente de IA a una plataforma de contenido ha significado, hasta ahora, escribir c\u00f3digo de integraci\u00f3n a medida para cada caso de uso. Las opciones habituales son todas imperfectas:\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003ELos \u003Cstrong\u003Ewebhooks\u003C\/strong\u003E emiten eventos hacia fuera, pero el agente sigue necesitando manejadores espec\u00edficos y no puede consultar ni explorar.\u003C\/li\u003E\n\u003Cli\u003ELos \u003Cstrong\u003Eenvoltorios REST\u003C\/strong\u003E obligan a escribir y mantener a mano una definici\u00f3n de herramienta para cada endpoint, y luego sincronizarla a medida que el esquema evoluciona.\u003C\/li\u003E\n\u003Cli\u003EEl \u003Cstrong\u003Escraping de HTML\u003C\/strong\u003E es el peor de todos: fr\u00e1gil, lento y roto en cuanto cambia una plantilla.\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cp\u003ELos tres comparten el mismo defecto fatal \u2014 se rompen cuando cambia tu modelo de contenido. Y los modelos de contenido cambian constantemente. Ese es justamente el sentido de un CMS flexible.\u003C\/p\u003E\n\n\u003Ch2\u003EC\u00f3mo funciona el servidor MCP de Jambo\u003C\/h2\u003E\n\u003Cp\u003ECada proyecto de Jambo expone un \u00fanico endpoint MCP:\u003C\/p\u003E\n\u003Cp\u003E\u003Ccode\u003EPOST \/api\/projects\/{id}\/mcp\u003C\/code\u003E\u003C\/p\u003E\n\u003Cp\u003EA trav\u00e9s de \u00e9l, un agente puede llamar a \u003Ccode\u003Etools\/list\u003C\/code\u003E para descubrir todo lo que puede hacer y luego invocar esas herramientas. Como Jambo genera los esquemas din\u00e1micamente, las herramientas MCP tambi\u00e9n se generan din\u00e1micamente. El agente siempre ve la forma \u003Cem\u003Eactual\u003C\/em\u003E de tus datos:\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cstrong\u003EListar colecciones\u003C\/strong\u003E \u2014 el agente descubre qu\u00e9 tipos de contenido existen.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EInspeccionar campos\u003C\/strong\u003E \u2014 tipos, obligatoriedad, relaciones, enumeraciones, todo es introspeccionable.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EConsultar contenido\u003C\/strong\u003E \u2014 con filtros, paginaci\u00f3n y selecci\u00f3n de idioma.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003ECrear y actualizar entradas\u003C\/strong\u003E \u2014 individuales o en lote, en cada idioma configurado.\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cp\u003ENo hay c\u00f3digo de integraci\u00f3n que escribir ni nada que mantener sincronizado. A\u00f1ade un campo en el editor de esquemas y aparecer\u00e1 en las herramientas MCP en la siguiente petici\u00f3n. El contrato y el contenido permanecen alineados autom\u00e1ticamente.\u003C\/p\u003E\n\n\u003Ch2\u003EUna sesi\u00f3n del mundo real\u003C\/h2\u003E\n\u003Cp\u003EEsto es lo que permite, dicho en lenguaje natural al agente:\u003C\/p\u003E\n\u003Cblockquote\u003E\u0022Claude, mira el esquema de nuestro cat\u00e1logo de productos y luego genera 20 fichas de producto realistas \u2014 nombres, descripciones y precios apropiados para una cafeter\u00eda de especialidad. Publ\u00edcalas en ingl\u00e9s y espa\u00f1ol.\u0022\u003C\/blockquote\u003E\n\u003Cp\u003EEl agente llama a \u003Ccode\u003Etools\/list\u003C\/code\u003E, lee la definici\u00f3n de la colecci\u00f3n \u003Ccode\u003Eproducts\u003C\/code\u003E, entiende que \u003Ccode\u003Eprice\u003C\/code\u003E es un n\u00famero y \u003Ccode\u003Edescription\u003C\/code\u003E texto enriquecido, genera contenido contextualmente apropiado y crea 40 entradas (20 \u00d7 2 idiomas) en unos segundos. No se escribi\u00f3 ning\u00fan c\u00f3digo pegamento para esta tarea. Tampoco har\u00e1 falta para la siguiente.\u003C\/p\u003E\n\n\u003Ch2\u003EConectar tu propio agente\u003C\/h2\u003E\n\u003Cp\u003EApunta cualquier cliente compatible con MCP al endpoint con un token de API del proyecto. Una configuraci\u00f3n de cliente t\u00edpica se ve as\u00ed:\u003C\/p\u003E\n\u003Cp\u003E\u003Ccode\u003E{ \u0022mcpServers\u0022: { \u0022jambo\u0022: { \u0022url\u0022: \u0022https:\/\/api.jambostack.site\/api\/projects\/{id}\/mcp\u0022, \u0022headers\u0022: { \u0022Authorization\u0022: \u0022Bearer TU_TOKEN\u0022 } } } }\u003C\/code\u003E\u003C\/p\u003E\n\u003Cp\u003EA partir de ah\u00ed, el agente descubre tus colecciones por s\u00ed mismo. El token delimita exactamente lo que puede ver y cambiar, de modo que mantienes el control.\u003C\/p\u003E\n\n\u003Ch2\u003EPor qu\u00e9 importa\u003C\/h2\u003E\n\u003Cp\u003ECreemos que el futuro interesante de la gesti\u00f3n de contenido no es un humano haciendo clic por un panel de administraci\u00f3n \u2014 es describir una intenci\u00f3n a un agente que entiende tu modelo de datos y act\u00faa sobre \u00e9l de forma segura. El MCP nativo es el sustrato que hace eso posible sin integraciones fr\u00e1giles mantenidas a mano. Integrarlo en Jambo desde el principio era el paso obvio. No ser\u00e1 el \u00faltimo CMS en ofrecer MCP \u2014 pero fue el primero.\u003C\/p\u003E","category":["case_study"],"field_published_at":"2026-05-22T10:00:00+00:00","author_name":"Equipo Jambo","_seo":{"metaTitle":null,"metaDescription":null,"slug":"entry-269","canonicalUrl":null,"ogImage":null,"score":null,"openGraph":{"title":"Por que integramos un servidor MCP en nuestro CMS","description":"","image":null,"type":"article","siteName":"Jambo"},"twitter":{"card":"summary","title":"Por que integramos un servidor MCP en nuestro CMS","description":"","image":null},"structuredData":{"@context":"https:\/\/schema.org","@type":"Article","headline":"","description":"","image":null,"datePublished":"2026-06-02T12:21:56+00:00","dateModified":"2026-06-02T12:21:56+00:00"},"hreflang":{"en":"https:\/\/example.com\/blog\/entry-269?locale=en","fr":"https:\/\/example.com\/blog\/entry-269?locale=fr","es":"https:\/\/example.com\/blog\/entry-269?locale=es","ar":"https:\/\/example.com\/blog\/entry-269?locale=ar","x-default":"https:\/\/example.com\/blog\/entry-269?locale=en"}}},{"id":270,"uuid":"57743fa6-0063-4f7e-8662-9f3b2b140f1c","locale":"es","status":"published","collection":"blog","created_at":"2026-06-02T12:21:56+00:00","updated_at":"2026-06-02T12:21:56+00:00","deleted_at":null,"published_at":"2026-06-02T12:21:56+00:00","scheduled_at":null,"creator":null,"updater":null,"assigned_to":null,"title":"Symfony 8 + PHP 8.4: Por que PHP en 2026","slug":"symfony-8-php-84-por-que-php-2026","excerpt":"PHP impulsa el 75 % de la web y, aun as\u00ed, queda fuera de las conversaciones sobre \u0022stacks modernos\u0022. Con Symfony 8, los property hooks de PHP 8.4 y el JIT, ese reflejo lleva una d\u00e9cada de retraso. Aqu\u00ed est\u00e1n los n\u00fameros.","body":"\u003Cp\u003ECuando contamos a los desarrolladores que Jambo est\u00e1 construido en PHP, la reacci\u00f3n casi siempre es la misma: una pausa cort\u00e9s y luego una pregunta sobre por qu\u00e9 no usamos \u0022simplemente Node\u0022. Es un instinto comprensible \u2014 y desactualizado por una d\u00e9cada. El PHP que se gan\u00f3 su reputaci\u00f3n en 2010 no es el lenguaje que se publica en 2026.\u003C\/p\u003E\n\u003Cp\u003EAs\u00ed que en lugar de discutir, mostramos benchmarks. Este es el argumento a favor de PHP como lenguaje backend serio hoy, contado a trav\u00e9s de las dos tecnolog\u00edas que hacen r\u00e1pido a Jambo: \u003Cstrong\u003ESymfony 8\u003C\/strong\u003E y \u003Cstrong\u003EPHP 8.4\u003C\/strong\u003E.\u003C\/p\u003E\n\n\u003Ch2\u003ESymfony 8 y el componente Runtime\u003C\/h2\u003E\n\u003Cp\u003ELa mayor mejora de rendimiento del Symfony moderno es el componente \u003Ccode\u003ERuntime\u003C\/code\u003E. Tradicionalmente, cada petici\u00f3n PHP reiniciaba todo el framework: cargar el kernel, construir el contenedor, registrar los servicios y, por fin, atender la petici\u00f3n. Ese coste es invisible por petici\u00f3n pero brutal a escala.\u003C\/p\u003E\n\u003Cp\u003EEl componente Runtime, combinado con la precarga de OPcache, mantiene el contenedor compilado y el mapa de clases residentes en memoria. El resultado en nuestro hardware de referencia:\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cstrong\u003EArranque en fr\u00edo:\u003C\/strong\u003E menos de 10 ms hasta un kernel listo\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003ERespuesta de API:\u003C\/strong\u003E 15\u201330 ms para una consulta de colecci\u00f3n filtrada t\u00edpica\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EMemoria:\u003C\/strong\u003E ~12 MB por worker bajo carga\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cp\u003EEsas cifras compiten con \u2014 y a menudo superan \u2014 las plataformas CMS en Node equivalentes haciendo el mismo trabajo JSON-sobre-HTTP, sin las pausas del recolector de basura.\u003C\/p\u003E\n\n\u003Ch2\u003EPHP 8.4 no es el lenguaje que recuerdas\u003C\/h2\u003E\n\u003Cp\u003ESi tu imagen mental de PHP es tipado d\u00e9bil y sopa de arrays, las \u00faltimas versiones te sorprender\u00e1n. PHP 8.4 en particular cierra la brecha de ergonom\u00eda con TypeScript:\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cstrong\u003EProperty hooks\u003C\/strong\u003E \u2014 propiedades calculadas y protegidas sin getters y setters repetitivos.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EVisibilidad asim\u00e9trica\u003C\/strong\u003E \u2014 \u003Ccode\u003Epublic private(set)\u003C\/code\u003E ofrece una propiedad de solo lectura desde fuera y escribible desde dentro, en una sola declaraci\u00f3n.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EClases readonly\u003C\/strong\u003E \u2014 objetos de valor inmutables con una sola palabra clave.\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003ETodo tipado\u003C\/strong\u003E \u2014 propiedades tipadas, tipos uni\u00f3n, enums y un JIT que convierte los caminos calientes en c\u00f3digo m\u00e1quina nativo.\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cp\u003EEl d\u00eda a d\u00eda es un lenguaje analizable est\u00e1ticamente, amigable con el IDE, que resulta ser m\u00e1s r\u00e1pido de lo que sugiere su reputaci\u00f3n de interpretado.\u003C\/p\u003E\n\n\u003Ch2\u003E\u00bfEntonces por qu\u00e9 no Node o Go?\u003C\/h2\u003E\n\u003Cp\u003ENos gustan ambos de verdad. Pero cada uno tiene un coste que importaba para un CMS:\u003C\/p\u003E\n\u003Cp\u003E\u003Cstrong\u003ENode\u003C\/strong\u003E ofrece un ecosistema enorme y agotador. La rotaci\u00f3n de dependencias, los cambios que rompen compatibilidad y la eterna pregunta de en cu\u00e1l de cinco bibliotecas competidoras confiar son un impuesto operativo real. Para un producto que debe ser estable durante a\u00f1os, esa rotaci\u00f3n es un riesgo.\u003C\/p\u003E\n\u003Cp\u003E\u003Cstrong\u003EGo\u003C\/strong\u003E es excelente para servicios de forma fija. Pero Jambo genera esquemas din\u00e1micamente en tiempo de ejecuci\u00f3n \u2014 colecciones y campos definidos por los usuarios, no por nosotros. El tipado est\u00e1tico de Go choca de frente con eso, mientras que la flexibilidad en ejecuci\u00f3n de PHP lo abraza.\u003C\/p\u003E\n\u003Cp\u003EY luego est\u00e1 \u003Cstrong\u003EDoctrine\u003C\/strong\u003E. Jambo usa un modelo Entidad-Atributo-Valor para almacenar los esquemas definidos por el usuario, y Doctrine ORM maneja ese patr\u00f3n \u2014 con su identity map, carga diferida y herramientas de migraci\u00f3n \u2014 con m\u00e1s madurez que cualquier cosa que encontramos en los mundos de Node o Go.\u003C\/p\u003E\n\n\u003Ch2\u003EVeinte a\u00f1os de aburrida estabilidad\u003C\/h2\u003E\n\u003Cp\u003ELa verdad poco glamurosa es que Symfony lleva dos d\u00e9cadas publicando versiones predecibles y retrocompatibles. Hay una ruta de actualizaci\u00f3n documentada, una pol\u00edtica de soporte a largo plazo y una comunidad que valora la estabilidad por encima de la novedad. Para una infraestructura que pretendes ejecutar en producci\u00f3n durante a\u00f1os, \u0022aburrido\u0022 es una caracter\u00edstica, no un compromiso.\u003C\/p\u003E\n\u003Cp\u003EPHP en 2026 es r\u00e1pido, estrictamente tipado y agradable de escribir. Las cejas que levantamos son un reflejo de otra \u00e9poca. Los benchmarks son de esta.\u003C\/p\u003E","category":["news"],"field_published_at":"2026-05-15T10:00:00+00:00","author_name":"Equipo Jambo","_seo":{"metaTitle":null,"metaDescription":null,"slug":"entry-270","canonicalUrl":null,"ogImage":null,"score":null,"openGraph":{"title":"Symfony 8 + PHP 8.4: Por que PHP en 2026","description":"","image":null,"type":"article","siteName":"Jambo"},"twitter":{"card":"summary","title":"Symfony 8 + PHP 8.4: Por que PHP en 2026","description":"","image":null},"structuredData":{"@context":"https:\/\/schema.org","@type":"Article","headline":"","description":"","image":null,"datePublished":"2026-06-02T12:21:56+00:00","dateModified":"2026-06-02T12:21:56+00:00"},"hreflang":{"en":"https:\/\/example.com\/blog\/entry-270?locale=en","fr":"https:\/\/example.com\/blog\/entry-270?locale=fr","es":"https:\/\/example.com\/blog\/entry-270?locale=es","ar":"https:\/\/example.com\/blog\/entry-270?locale=ar","x-default":"https:\/\/example.com\/blog\/entry-270?locale=en"}}}],"meta":{"total":3,"page":1,"per_page":15,"pages":1}}