{"id":81239,"date":"2025-12-05T09:29:41","date_gmt":"2025-12-05T08:29:41","guid":{"rendered":"https:\/\/kinsta.com\/es\/?p=81239&#038;preview=true&#038;preview_id=81239"},"modified":"2025-12-08T14:28:23","modified_gmt":"2025-12-08T13:28:23","slug":"php-8-5","status":"publish","type":"post","link":"https:\/\/kinsta.com\/es\/blog\/php-8-5\/","title":{"rendered":"PHP 8.5: Estas son las novedades de la \u00faltima versi\u00f3n"},"content":{"rendered":"<p>El Grupo PHP ha publicado la versi\u00f3n 8.5 del lenguaje de programaci\u00f3n de c\u00f3digo abierto que impulsa gran parte de la Web, incluidos los sitios que utilizan el CMS WordPress.<\/p>\n<p>El lanzamiento de PHP 8.5 en noviembre ha supuesto el segundo a\u00f1o del compromiso de la comunidad PHP de ofrecer actualizaciones importantes con periodicidad anual, seguidas de <a href=\"https:\/\/www.php.net\/supported-versions.php\">dos a\u00f1os completos de soporte activo<\/a> para cada versi\u00f3n.<\/p>\n<p>Aunque la versi\u00f3n 8.5 es totalmente nueva, ya la hemos incluido en nuestra <a href=\"https:\/\/kinsta.com\/es\/blog\/puntos-de-referencia-php\/\">evaluaci\u00f3n comparativa anual de PHP<\/a>, junto con una variedad de plataformas y frameworks CMS populares.<\/p>\n<p>Si est\u00e1s planeando <a href=\"https:\/\/www.php.net\/manual\/en\/migration85.php\">migrar aplicaciones PHP a la versi\u00f3n 8.5<\/a>, necesitar\u00e1s saber qu\u00e9 ha cambiado en esta \u00faltima versi\u00f3n. Eso incluye nuevas funcionalidades que podr\u00edas aprovechar para mejorar tu c\u00f3digo y antiguas funcionalidades que los desarrolladores de PHP se disponen a eliminar.<\/p>\n<p>Esto es lo que consideramos lo m\u00e1s destacado de la nueva versi\u00f3n:<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Nuevas funcionalidades y mejoras en PHP 8.5<\/h2>\n<p>Comencemos con las novedades en el c\u00f3digo base de PHP. Estos cambios suelen comenzar como <a href=\"https:\/\/wiki.php.net\/rfc\">Solicitudes de Comentarios (RFC)<\/a> que, con el tiempo, pueden aprobarse y asignarse a una futura versi\u00f3n de PHP.<\/p>\n<p>Las nuevas funcionalidades que se describen a continuaci\u00f3n son las que acaparan la mayor parte de la atenci\u00f3n en torno a PHP 8.5.<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"disc\" selector=\"h3\" count-number=\"5\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3>Llamadas a funciones en cadena con un operador pipe<\/h3>\n<p>Un nuevo operador de pipe (<code class=\"language-php\">|&gt;<\/code>) encadena las llamadas a funciones de un modo que resultar\u00e1 vagamente familiar a los programadores de JavaScript. El pipe opera de izquierda a derecha, pasando un \u00fanico valor a lo largo de la cadena en cada paso.<\/p>\n<p>Con versiones anteriores de PHP, los programadores podr\u00edan haber realizado una tarea similar anidando funciones o recorriendo una serie de llamadas a funciones sobre el valor devuelto en cada paso.<\/p>\n<p>Aqu\u00ed hay un ejemplo sencillo que utiliza el nuevo operador pipe:<\/p>\n<pre><code class=\"language-php\">$text = ' New-in-php-8.4 ';\n\n$result = $text\n    |&gt; trim(...)\n    |&gt; (fn($str) =&gt; str_replace('4', '5', $str))\n    |&gt; (fn($str) =&gt; str_replace('-', ' ', $str))\n    |&gt; strtoupper(...);\n\nvar_dump($result);\n\/\/ string(14) \"NEW IN PHP 8.5\"<\/code><\/pre>\n<p>(Ten en cuenta que estamos utilizando la <a href=\"https:\/\/kinsta.com\/es\/blog\/php-8-1\/#firstclass-callable-syntax\">sintaxis de first-class callables<\/a> <code class=\"language-php\">(...)<\/code> introducida en PHP 8.1 con las llamadas a las funciones <code class=\"language-php\">trim()<\/code> y <code class=\"language-php\">strtoupper()<\/code>)<\/p>\n<p>La cadena pipe superior podr\u00eda escribirse en una sola l\u00ednea, pero se supone que la legibilidad es uno de los beneficios de este nuevo operador.<\/p>\n<p>Lo anterior equivale a anidar esas operaciones (en orden inverso) de la siguiente manera:<\/p>\n<pre><code class=\"language-php\">$text = \" New-in-php-8.4 \";\n\n$result = strtoupper(\n    str_replace(\u2018-, ' ',\n        str_replace('4', '5', \n            trim($text)\n         )\n     )\n);<\/code><\/pre>\n<p>Alternativamente, un programador podr\u00eda haber completado la tarea en versiones anteriores de PHP as\u00ed:<\/p>\n<pre><code class=\"language-php\">$text = \" New-in-php-8.4 \";\n\n$result = trim($text);\n$result = str_replace('4', '5', $result);\n$result = str_replace(\u2018-, ' ', $result);\n$result = strtoupper($result);<\/code><\/pre>\n<h3>Analizar (o Parsear) URLs con la nueva extensi\u00f3n URI<\/h3>\n<p>Las URL (tambi\u00e9n conocidas como URI para los m\u00e1s exigentes) son esenciales para la navegaci\u00f3n web, pero la funci\u00f3n <code>parse_url()<\/code>, integrada en PHP desde la versi\u00f3n 4, es conocida por tener problemas con entradas mal formadas que pueden provocar errores al intentar manipular o validar direcciones de sitios web.<\/p>\n<p>Para mejorar el an\u00e1lisis sint\u00e1ctico de las URL, PHP 8.5 incorpora las bibliotecas <a href=\"https:\/\/uriparser.github.io\/\">uriparser<\/a> y <a href=\"https:\/\/lexbor.com\/\">Lexbor<\/a> para dar soporte a los est\u00e1ndares <a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc3986\">RFC 3986<\/a> y <a href=\"https:\/\/url.spec.whatwg.org\/\">WHATWG URL<\/a>, respectivamente.<\/p>\n<p>Puedes invocar la biblioteca uniparser empezando a trabajar con la nueva extensi\u00f3n URI de la siguiente manera:<\/p>\n<pre><code class=\"language-php\">$uri = new UriRfc3986Uri(\"https:\/\/kinsta.com\/blog\/php-8-5\/\"); \n\necho $uri-&gt;getScheme();       \/\/ https\necho $uri-&gt;getHost();         \/\/ kinsta.com\necho $uri-&gt;getPath();         \/\/ \/blog\/php-8-5<\/code><\/pre>\n<p>Alternativamente, puedes elegir la biblioteca Lexbor WHATWG URL as\u00ed:<\/p>\n<pre><code class=\"language-php\">$uri = new UriWagWgUrl(\"https:\/\/kinsta.com\/blog\/php-8-5\/\"); \n\necho $uri-&gt;getScheme();       \/\/ https\necho $uri-&gt;getUnicodeHost();  \/\/ kinsta.com\necho $uri-&gt;getAsciiHost();    \/\/ kinsta.com\necho $uri-&gt;getPath();         \/\/ \/blog\/php-8-5<\/code><\/pre>\n<p>Los ejemplos anteriores son los m\u00e1s b\u00e1sicos. Las dos bibliotecas representadas por la extensi\u00f3n URI en PHP 8.5 comparten algunas funcionalidades y tambi\u00e9n presentan diferencias significativas.<\/p>\n<p>Una diferencia importante es que la librer\u00eda (que implementa) RFC 3986 soporta tanto representaciones \u00abraw\u00bb (sin procesar\/tal cual) como \u00abnormalized-decoded\u00bb (decodificadas\/normalizadas) de las URIs. Esto puede ser \u00fatil al trabajar con entradas y salidas que contienen percent-encoding (codificaci\u00f3n de porcentaje). Por ejemplo, en un navegador, estas dos URIs son id\u00e9nticas:<\/p>\n<ul>\n<li><a href=\"https:\/\/kinsta.com\/es\/mykinsta\/\">https:\/\/kinsta.com\/mykinsta\/<\/a><\/li>\n<li><a href=\"https:\/\/kinsta.com\/es\/mykinsta\/\">https:\/\/kinsta.com\/%6D%79%6B%69%6E%73%74%61\/<\/a><\/li>\n<\/ul>\n<p>En versiones anteriores de PHP, se pod\u00eda empezar con <code class=\"language-php\">rawurldecode()<\/code> y <code class=\"language-php\">rawurlencode()<\/code>\u00a0(que tambi\u00e9n cumplen con RFC 3986), pero la nueva extensi\u00f3n est\u00e1 lista para trabajar con todos los componentes de los URI desde el primer momento, est\u00e9n codificados o no.<\/p>\n<p>Aqu\u00ed tienes algunos ejemplos extra\u00eddos directamente de la <a href=\"https:\/\/wiki.php.net\/rfc\/url_parsing_api\">RFC en la que se basa la nueva API de an\u00e1lisis sint\u00e1ctico<\/a>:<\/p>\n<pre><code class=\"language-php\">$uri = new UriRfc3986Uri(\"https:\/\/%61pple:p%61ss@ex%61mple.com\/foob%61r?%61bc=%61bc\");\n  \necho $uri-&gt;getRawUserInfo();  \/\/ %61pple:p%61ss\necho $uri-&gt;getUserInfo();     \/\/ apple:pass\n \necho $uri-&gt;getRawUsername();  \/\/ %61pple\necho $uri-&gt;getUsername();     \/\/ apple\n \necho $uri-&gt;getRawPassword();  \/\/ p%61ss\necho $uri-&gt;getPassword();     \/\/ pass\n \necho $uri-&gt;getRawHost();      \/\/ ex%61mple.com\necho $uri-&gt;getHost();         \/\/ example.com\n \necho $uri-&gt;getRawPath();      \/\/ \/foob%61r\necho $uri-&gt;getPath();         \/\/ \/foobar\n \necho $uri-&gt;getRawQuery();     \/\/ %61bc=%61bc\necho $uri-&gt;getQuery();        \/\/ abc=abc<\/code><\/pre>\n<p>Cuando se utiliza la biblioteca URL WHATWG con la nueva extensi\u00f3n, todos las URI se tratan como \u00abraw\u00bb, por lo que no hay un conjunto separado de funciones para soportar un formato alternativo. Pero la biblioteca puede convertir entre los caracteres ASCII y Unicode que suelen aparecer en las URI.<\/p>\n<h3>S\u00e9 estricto con una nueva directiva INI max_memory_limit<\/h3>\n<p>Dicen que un gran poder conlleva una gran responsabilidad. Si ese poder incluye elegir cu\u00e1nta memoria del servidor puede intentar utilizar tu aplicaci\u00f3n PHP, podr\u00edas ser responsable de ca\u00eddas de la aplicaci\u00f3n cuando los procesos consuman m\u00e1s memoria de la disponible.<\/p>\n<p>Parte de una instalaci\u00f3n t\u00edpica de PHP es un archivo <code>php.ini<\/code> con informaci\u00f3n de configuraci\u00f3n que incluye una directiva que especifica un l\u00edmite de consumo de memoria para cualquier proceso <a href=\"https:\/\/kinsta.com\/es\/blog\/hilos-php-vs-limite-memoria-php\/\">(o hilo)<\/a> PHP. Una directiva INI com\u00fan para un l\u00edmite de memoria de 128 MB tiene este aspecto:<\/p>\n<pre><code>\/\/ php.ini\nmemory_limit 128M<\/code><\/pre>\n<p>En algunas plataformas de alojamiento, los desarrolladores de aplicaciones PHP pueden anular <code>memory_limit<\/code> sobre la marcha utilizando la funci\u00f3n <code class=\"language-php\">ini_set()<\/code> en su c\u00f3digo:<\/p>\n<pre><code class=\"language-php\">ini_set(\u2018memory_limit\u2019, \u2018256M\u2019);\n \n\/\/ Start code that requires up to 256 MB of memory<\/code><\/pre>\n<p>Tambi\u00e9n puedes pasar a la funci\u00f3n el valor <strong>-1<\/strong>, como <code class=\"language-php\">ini_set('memory_limit', '-1')<\/code> &#8211; para no imponer ning\u00fan l\u00edmite.<\/p>\n<p>Anular la directiva INI para un l\u00edmite de memoria puede ser arriesgado para los desarrolladores que no est\u00e9n \u00edntimamente familiarizados con las configuraciones de memoria de los servidores en los que se ejecutar\u00e1n sus aplicaciones. Si uno o varios hilos PHP intentan consumir m\u00e1s memoria de la permitida, la aplicaci\u00f3n puede bloquearse sin previo aviso en tiempo de ejecuci\u00f3n.<\/p>\n<p>PHP 8.5 a\u00f1ade una directiva INI <code>max_memory_limit<\/code> que sirve como l\u00edmite m\u00e1ximo, incluso en configuraciones en las que los desarrolladores tienen acceso a <code class=\"language-php\">init_set()<\/code> para ajustar el uso de memoria en su c\u00f3digo.<\/p>\n<p>Aqu\u00ed tienes entradas de ejemplo en el archivo <code>php.ini<\/code> de una instalaci\u00f3n de PHP 8.5:<\/p>\n<pre><code>\/\/ php.ini\nmax_memory_limit 256M\nmemory_limit 128M<\/code><\/pre>\n<p>Con un <code>max_memory_limit<\/code> de 256 MB, esto es lo que ocurre en nuestro c\u00f3digo PHP:<\/p>\n<pre><code class=\"language-php\">ini_set('memory_limit', '256M');  \/\/ This is OK\nini_set('memory_limit', '512M');  \/\/ Fail with warning\nini_set('memory_limit', '-1');    \/\/ Fail with warning<\/code><\/pre>\n<p>Intentar establecer un nuevo l\u00edmite de memoria de 512 MB (o ilimitado) por encima no tendr\u00e1 \u00e9xito. En su lugar, PHP establecer\u00e1 el l\u00edmite de memoria en el valor asignado a <code>max_memory_limit<\/code> en el archivo <code>php.ini<\/code> y emitir\u00e1 una advertencia. (El mensaje de advertencia podr\u00eda mostrarse en pantalla y registrarse, dependiendo de la configuraci\u00f3n del informe de errores de la instalaci\u00f3n de PHP)<\/p>\n<p>Un enfoque inteligente para los desarrolladores de PHP 8.5 ser\u00eda utilizar la funci\u00f3n <code class=\"language-php\">ini_get()<\/code> para ver si se ha definido el nuevo l\u00edmite m\u00e1ximo, como <code class=\"language-php\">ini_get('max_memory_limit')<\/code> &#8211; y luego ajustar seg\u00fan el valor devuelto. Con versiones de PHP anteriores a la 8.5, esa llamada devolver\u00eda con seguridad <code>false<\/code>.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>En Kinsta, la memoria se gestiona de forma un poco diferente. Puedes ajustar el n\u00famero de hilos y la memoria asignada a cada uno de ellos utilizando la <a href=\"https:\/\/kinsta.com\/es\/docs\/alojamiento-wordpress\/php\/rendimiento-wordpress-php\/\">Herramienta de rendimiento PHP<\/a>. La misma herramienta te permite aumentar (por un coste adicional) o reducir el tama\u00f1o del conjunto total de memoria compartida por los hilos.<\/p>\n<\/aside>\n\n<h3>Obtener el primer o \u00faltimo valor de un array<\/h3>\n<p>Que levante la mano quien pensara que PHP ya ten\u00eda funciones para leer los valores almacenados como primer o \u00faltimo elemento de un array.<\/p>\n<p>Resulta que no. Pero desde <a href=\"https:\/\/kinsta.com\/es\/blog\/nueva-version-php-7-3\/#array-key-first-last\">PHP 7.3<\/a>, cuenta con funciones para descubrir la primera y la \u00faltima <b>clave<\/b> de un array. Por lo tanto, para encontrar el primer y el \u00faltimo valor, puedes emplear las funciones <code>array_key_first()<\/code> o <code>array_key_last()<\/code>y, a continuaci\u00f3n, utilizar las claves devueltas para hacer referencia a los valores que est\u00e1s buscando:<\/p>\n<pre><code class=\"language-php\">$array = [\"One\", \"Two\", \"Three\"];\n\necho $array[array_key_first($array)]; \/\/ \"One\"\n<\/code><\/pre>\n<p>PHP 8.5 elimina un paso para esa tarea y te permite alcanzar los valores directamente con las nuevas funciones <code class=\"language-php\">array_first()<\/code> y <code class=\"language-php\">array_last()<\/code>.<\/p>\n<p>Todo es muy sencillo:<\/p>\n<pre><code class=\"language-php\">$array = [\"One\", \"Two\", \"Three\"];\n\necho array_first($array);  \/\/ \"One\"\necho array_last($array);   \/\/ \"Three\"\necho array_last([]);       \/\/ null<\/code><\/pre>\n<p>Arriba, puedes ver que un array vac\u00eda devolver\u00e1 <code>null<\/code>, pero eso por s\u00ed solo no confirma que todo el array est\u00e9 vac\u00edo, ya que un valor de array puede ser nulo:<\/p>\n<pre><code class=\"language-php\">echo array_last([1, 2, null]); \/\/ null<\/code><\/pre>\n<h3>Obtener recordatorios para utilizar el valor de retorno de una funci\u00f3n<\/h3>\n<p>PHP 8.5 a\u00f1ade un nuevo atributo <code class=\"language-php\">#[NoDiscard]<\/code> que indica que el valor de retorno de una funci\u00f3n puede ser cr\u00edtico. PHP confirmar\u00e1 que el valor de retorno se consume de alg\u00fan modo y, si no es as\u00ed, lanzar\u00e1 una advertencia.<\/p>\n<p>Un ejemplo sencillo:<\/p>\n<pre><code class=\"language-php\">#[NoDiscard(\"this message property will be appended to the built-in warning.\")]\nfunction foo(): string {\n    return 'bar';\n}\n\n\/\/ Warning:\n\/\/ The return value of function foo() is expected to be consumed,\n\/\/ this message property will be appended to the built-in warning.\nfoo();\n\n\/\/ This will not trigger a warning:\n$result = foo();\n\n\/\/ Also satisfactory is the (void) cast:\n(void) foo();<\/code><\/pre>\n<p>En el ejemplo anterior, el valor de retorno de la funci\u00f3n definida no se utiliza en absoluto en primera instancia, lo que desencadena una advertencia. Pero al asignarlo a la variable <code class=\"language-php\">$result<\/code> o lanzarlo como <code class=\"language-php\">void<\/code>, se consider\u00f3 que el valor se hab\u00eda consumido.<\/p>\n<p>Los autores de la <a href=\"https:\/\/wiki.php.net\/rfc\/marking_return_value_as_important\">RFC detr\u00e1s de esta novedad<\/a> en PHP 8.5 describieron usos m\u00e1s convincentes para este atributo que el simple ejemplo anterior. Uno de los escenarios era una funci\u00f3n cr\u00edtica con un informe de errores m\u00e1s complejo que un simple \u00e9xito\/fracaso (pass\/fail), y que se transmit\u00eda mejor a trav\u00e9s del valor de retorno de la funci\u00f3n.<\/p>\n<h4>Otras mejoras relacionadas con los atributos<\/h4>\n<p>Adem\u00e1s del nuevo atributo <code class=\"language-php\">#[NoDiscard]<\/code>, la nueva versi\u00f3n incluye otras mejoras en la funcionalidad de los metadatos de atributos:<\/p>\n<ul>\n<li>Ahora los atributos pueden apuntar a constantes.<\/li>\n<li>El atributo <code class=\"language-php\">#[Override]<\/code> puede aplicarse ahora a propiedades.<\/li>\n<li>El atributo <code class=\"language-php\">#[Deprecated]<\/code> puede utilizarse en rasgos y constantes.<\/li>\n<li>Se puede utilizar un nuevo atributo <code>#[\\DelayedTargetValidation]<\/code> para suprimir los errores en tiempo de compilaci\u00f3n de los atributos principales y de extensi\u00f3n que se utilizan en objetivos no v\u00e1lidos.<\/li>\n<\/ul>\n<h2>Depreciaciones y eliminaciones en PHP 8.5<\/h2>\n<p>Con cada lanzamiento de PHP se incluye una lista de funcionalidades que se eliminar\u00e1n en futuras versiones. El uso de caracter\u00edsticas obsoletas en tu c\u00f3digo generar\u00e1 advertencias. Cuando finalmente se eliminen de PHP, su uso puede provocar errores fatales.<\/p>\n<p>Estos son algunos elementos destacados que han quedado obsoletos o se han eliminado en PHP 8.5:<\/p>\n<ul>\n<li>El operador backtick como alias de <code class=\"language-php\">shell_exec()<\/code> ha quedado obsoleto.<\/li>\n<li>Los nombres de reparto no can\u00f3nicos <code class=\"language-php\">(boolean)<\/code>, <code class=\"language-php\">(integer)<\/code>, <code class=\"language-php\">(double)<\/code>, y <code class=\"language-php\">(binary)<\/code> han quedado obsoletos. En su lugar, utiliza <code class=\"language-php\">(bool)<\/code>, <code class=\"language-php\">(int)<\/code>, <code class=\"language-php\">(float)<\/code>, y <code class=\"language-php\">(string)<\/code>.<\/li>\n<li>Se ha eliminado el ajuste INI disable_classes, ya que provoca que se rompan varias suposiciones del motor.<\/li>\n<li>La terminaci\u00f3n de las sentencias <code class=\"language-php\">case<\/code> con punto y coma en lugar de dos puntos ha quedado obsoleta.<\/li>\n<li>El uso de null como desplazamiento de array o al llamar a <code>array_key_exists()<\/code> ahora est\u00e1 en desuso. Utiliza una cadena vac\u00eda en su lugar.<\/li>\n<li>Ya no es posible utilizar \u00abarray\u00bb y \u00abcallable\u00bb como nombres de alias de clases en <code class=\"language-php\">class_alias()<\/code>.<\/li>\n<li>Los m\u00e9todos m\u00e1gicos <code class=\"language-php\">__sleep()<\/code> y <code class=\"language-php\">__wakeup()<\/code> han quedado suavemente obsoletos. En su lugar, deben utilizarse los m\u00e9todos m\u00e1gicos <code class=\"language-php\">__serialize()<\/code> y <code class=\"language-php\">__unserialize()<\/code>.<\/li>\n<li>Ahora se emite una advertencia al convertir NAN en otros tipos.<\/li>\n<li>La desestructuraci\u00f3n de valores que no sean arrays (distintos de null) mediante <code class=\"language-php\">[]<\/code> o <code class=\"language-php\">list()<\/code> emite ahora una advertencia.<\/li>\n<li>Ahora se emite una advertencia al convertir valores flotantes (o cadenas que parecen flotantes) a <code>int<\/code> si no pueden representarse como tales.<\/li>\n<\/ul>\n<h2>Resumen<\/h2>\n<p>Esto ha sido un resumen de las novedades m\u00e1s destacadas de la versi\u00f3n PHP 8.5. Estamos seguros de que el nuevo operador pipe y el an\u00e1lisis URI mejorado tendr\u00e1n una gran acogida entre los desarrolladores. Puede que tambi\u00e9n lo tengan las nuevas funciones <code class=\"language-php\">array_first()<\/code> y <code class=\"language-php\">array_last()<\/code>, que hubi\u00e9ramos apostado a que ya exist\u00edan.<\/p>\n<p>Pero cualquier nueva versi\u00f3n de PHP engloba cientos de cambios. Puedes encontrar una <a href=\"https:\/\/github.com\/php\/php-src\/blob\/PHP-8.5\/UPGRADING\">lista completa de las actualizaciones de PHP 8.5<\/a> en el repositorio oficial de GitHub del Grupo PHP.<\/p>\n<p>Mientras tanto, aqu\u00ed en Kinsta, estamos trabajando para que PHP 8.5 est\u00e9 disponible para nuestros clientes de <a href=\"https:\/\/kinsta.com\/es\/wordpress-hosting\/\">alojamiento para WordPress<\/a>. Cuando est\u00e9 online, podr\u00e1s cambiar a la nueva versi\u00f3n utilizando nuestras herramientas de <a href=\"https:\/\/kinsta.com\/es\/docs\/alojamiento-wordpress\/php\/wordpress-reiniciar-actualizar-php\/#update-php\">configuraci\u00f3n de PHP<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El Grupo PHP ha publicado la versi\u00f3n 8.5 del lenguaje de programaci\u00f3n de c\u00f3digo abierto que impulsa gran parte de la Web, incluidos los sitios que &#8230;<\/p>\n","protected":false},"author":259,"featured_media":81240,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1317],"class_list":["post-81239","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-actualizaciones-php"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PHP 8.5: Estas son las novedades de la \u00faltima versi\u00f3n<\/title>\n<meta name=\"description\" content=\"Es la \u00e9poca del a\u00f1o en la que se presenta una nueva versi\u00f3n de PHP. A continuaci\u00f3n, se detallan las novedades m\u00e1s destacadas de PHP 8.5.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/es\/blog\/php-8-5\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PHP 8.5: Estas son las novedades de la \u00faltima versi\u00f3n\" \/>\n<meta property=\"og:description\" content=\"Es la \u00e9poca del a\u00f1o en la que se presenta una nueva versi\u00f3n de PHP. A continuaci\u00f3n, se detallan las novedades m\u00e1s destacadas de PHP 8.5.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/es\/blog\/php-8-5\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinsta.es\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-05T08:29:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-08T13:28:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2025\/12\/whats-new-in-php-8.5.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1470\" \/>\n\t<meta property=\"og:image:height\" content=\"735\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Steve Bonisteel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Es la \u00e9poca del a\u00f1o en la que se presenta una nueva versi\u00f3n de PHP. A continuaci\u00f3n, se detallan las novedades m\u00e1s destacadas de PHP 8.5.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2025\/12\/whats-new-in-php-8.5.png\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Steve Bonisteel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/php-8-5\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/php-8-5\/\"},\"author\":{\"name\":\"Steve Bonisteel\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\"},\"headline\":\"PHP 8.5: Estas son las novedades de la \u00faltima versi\u00f3n\",\"datePublished\":\"2025-12-05T08:29:41+00:00\",\"dateModified\":\"2025-12-08T13:28:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/php-8-5\/\"},\"wordCount\":1943,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/php-8-5\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2025\/12\/whats-new-in-php-8.5.png\",\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/php-8-5\/\",\"url\":\"https:\/\/kinsta.com\/es\/blog\/php-8-5\/\",\"name\":\"PHP 8.5: Estas son las novedades de la \u00faltima versi\u00f3n\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/php-8-5\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/php-8-5\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2025\/12\/whats-new-in-php-8.5.png\",\"datePublished\":\"2025-12-05T08:29:41+00:00\",\"dateModified\":\"2025-12-08T13:28:23+00:00\",\"description\":\"Es la \u00e9poca del a\u00f1o en la que se presenta una nueva versi\u00f3n de PHP. A continuaci\u00f3n, se detallan las novedades m\u00e1s destacadas de PHP 8.5.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/php-8-5\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/php-8-5\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/php-8-5\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2025\/12\/whats-new-in-php-8.5.png\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2025\/12\/whats-new-in-php-8.5.png\",\"width\":1470,\"height\":735},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/php-8-5\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Actualizaciones de PHP\",\"item\":\"https:\/\/kinsta.com\/es\/secciones\/actualizaciones-php\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"PHP 8.5: Estas son las novedades de la \u00faltima versi\u00f3n\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/es\/#website\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluciones de alojamiento premium, r\u00e1pidas y seguras\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/es\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinsta.es\/\",\"https:\/\/x.com\/Kinsta_ES\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\",\"name\":\"Steve Bonisteel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"caption\":\"Steve Bonisteel\"},\"description\":\"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.\",\"url\":\"https:\/\/kinsta.com\/es\/blog\/author\/stevebonisteel\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PHP 8.5: Estas son las novedades de la \u00faltima versi\u00f3n","description":"Es la \u00e9poca del a\u00f1o en la que se presenta una nueva versi\u00f3n de PHP. A continuaci\u00f3n, se detallan las novedades m\u00e1s destacadas de PHP 8.5.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/es\/blog\/php-8-5\/","og_locale":"es_ES","og_type":"article","og_title":"PHP 8.5: Estas son las novedades de la \u00faltima versi\u00f3n","og_description":"Es la \u00e9poca del a\u00f1o en la que se presenta una nueva versi\u00f3n de PHP. A continuaci\u00f3n, se detallan las novedades m\u00e1s destacadas de PHP 8.5.","og_url":"https:\/\/kinsta.com\/es\/blog\/php-8-5\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinsta.es\/","article_published_time":"2025-12-05T08:29:41+00:00","article_modified_time":"2025-12-08T13:28:23+00:00","og_image":[{"width":1470,"height":735,"url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2025\/12\/whats-new-in-php-8.5.png","type":"image\/png"}],"author":"Steve Bonisteel","twitter_card":"summary_large_image","twitter_description":"Es la \u00e9poca del a\u00f1o en la que se presenta una nueva versi\u00f3n de PHP. A continuaci\u00f3n, se detallan las novedades m\u00e1s destacadas de PHP 8.5.","twitter_image":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2025\/12\/whats-new-in-php-8.5.png","twitter_creator":"@Kinsta_ES","twitter_site":"@Kinsta_ES","twitter_misc":{"Escrito por":"Steve Bonisteel","Tiempo de lectura":"12 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/es\/blog\/php-8-5\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/blog\/php-8-5\/"},"author":{"name":"Steve Bonisteel","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f"},"headline":"PHP 8.5: Estas son las novedades de la \u00faltima versi\u00f3n","datePublished":"2025-12-05T08:29:41+00:00","dateModified":"2025-12-08T13:28:23+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/php-8-5\/"},"wordCount":1943,"publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/php-8-5\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2025\/12\/whats-new-in-php-8.5.png","inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/es\/blog\/php-8-5\/","url":"https:\/\/kinsta.com\/es\/blog\/php-8-5\/","name":"PHP 8.5: Estas son las novedades de la \u00faltima versi\u00f3n","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/php-8-5\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/php-8-5\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2025\/12\/whats-new-in-php-8.5.png","datePublished":"2025-12-05T08:29:41+00:00","dateModified":"2025-12-08T13:28:23+00:00","description":"Es la \u00e9poca del a\u00f1o en la que se presenta una nueva versi\u00f3n de PHP. A continuaci\u00f3n, se detallan las novedades m\u00e1s destacadas de PHP 8.5.","breadcrumb":{"@id":"https:\/\/kinsta.com\/es\/blog\/php-8-5\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/es\/blog\/php-8-5\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/blog\/php-8-5\/#primaryimage","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2025\/12\/whats-new-in-php-8.5.png","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2025\/12\/whats-new-in-php-8.5.png","width":1470,"height":735},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/es\/blog\/php-8-5\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/es\/"},{"@type":"ListItem","position":2,"name":"Actualizaciones de PHP","item":"https:\/\/kinsta.com\/es\/secciones\/actualizaciones-php\/"},{"@type":"ListItem","position":3,"name":"PHP 8.5: Estas son las novedades de la \u00faltima versi\u00f3n"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/es\/#website","url":"https:\/\/kinsta.com\/es\/","name":"Kinsta\u00ae","description":"Soluciones de alojamiento premium, r\u00e1pidas y seguras","publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/es\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinsta.es\/","https:\/\/x.com\/Kinsta_ES","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f","name":"Steve Bonisteel","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","caption":"Steve Bonisteel"},"description":"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.","url":"https:\/\/kinsta.com\/es\/blog\/author\/stevebonisteel\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/81239","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/users\/259"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/comments?post=81239"}],"version-history":[{"count":11,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/81239\/revisions"}],"predecessor-version":[{"id":81288,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/81239\/revisions\/81288"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/81239\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/81239\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/81239\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/81239\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/81239\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/81239\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/81239\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/81239\/translations\/es"},{"href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/81239\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media\/81240"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media?parent=81239"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/tags?post=81239"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/topic?post=81239"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}