PHP 8.2: las novedades de la nueva versión de PHP que está por llegar

PHP 8.2: las novedades de la nueva versión de PHP que está por llegar

Se espera que el lanzamiento de la nueva versión, PHP 8.2 sea el 24 de noviembre de 2022. En este momento estamos en la versión 8.1, y se vienen algunos cambios, incorporaciones y funciones deprecadas que, si bien falta un poco aún para estar disponible, no queríamos dejar de contarte qué esperar de la nueva versión 8.2.

Desde luego que para los usuarios finales no habrá grandes cambios, ya que casi todos los sitios están creados con un CMS como WordPress, que utilizan “bajo el capot” a PHP como entorno de programación, y las diferentes actualizaciones ya van adaptándose a las nuevas variantes que presenta cada versión. Es por eso que es súper importante mantener actualizado tu gestor de contenidos, de manera de vivir más tranquilo, seguro y al día. Si eres usuario de WordPress, es probable que estés familiarizado con la importancia de mantener actualizados tus temas, plugins y versión de base. Sin embargo, también es crítico mantener tu PHP actualizado en tu plan de hosting.

 

Hosting. Más simple.

Alojamiento Amazon AWS, PHP, MySQL, panel de control cPanel, y herramientas geniales. ¡Ahora con descuento!

Ver planes

 

 

Qué cambios esperar en PHP 8.2

Preparamos un listado breve de algunos de los cambios más importante que se dejaron ver en la versión PHP 8.2 que aterrizará en breve.

Nuevas Clases de tipo readonly

La anterior versión de PHP, PHP 8.1, introdujo la función “readonly” para agregar a las propiedades de las clases. PHP 8.2 añade soporte para declarar directamente toda la clase como “readonly”. Esto quiere decir que si declaras una clase como “readonly”, lo hará con herencia hacia todas las propiedades que tenga. Esto ahorra tiempo y es más ordenado que declarar propiedad por propiedad.

PHP 8.2 permitite los tipos “true”, “false”, y “null” como independiente

Versiones anteriores de PHP ya incluían tipos como “int”, “string”, y “bool”. Esto se amplió en PHP 8 con el agregado de tipos de unión, que permiten que los valores sean de diferentes tipos. La misma RFC también permitía utilizar “false” y “null” como parte de un tipo de unión, pero no se permitían como tipos independientes. Si ponías “null” o “false”, zás… “Fatal error”. 💥

Parámetros Confidenciales en las Back Traces

Como casi cualquier lenguaje de programación, PHP permite “stackear” llamadas en cualquier punto de la ejecución, lo que facilita la depuración del código para corregir errores y cuellos de botella en el rendimiento. Esto forma parte de herramientas como Monitoreo de consumos y Analizador de Plugins de WNPower: nuestras herramienta de monitoreo de rendimiento diseñadas especialmente para usuarios como tú. ✅

Realizar un seguimiento del stack por lo general no genera problemas, pero puede interferir negativamente si estás utilizando servicios de terceros para su análisis. Particularmente si los datos que van y vuelven incluyen usuario, contraseñas y otros datos privados en las variables de entorno. Para esto, PHP 8.2 permite el atributo “SensitiveParameter”, el cual no aparece en los backtraces. 😃

Nueva función “mysqli_execute_query” y nuevo método “mysqli::execute_query”

PHP 8.2 facilita la ejecución de consultas de “MySQLi” parametrizadas con la nueva función “mysqli_execute_query” y el método “mysqli::execute_query”.

Esta nueva función es una combinación de las funciones “mysqli_prepare”, “mysqli_execute” y “mysqli_stmt_get_result”; y con ella, la consulta MySQLi se preparará según parámetros, y se ejecutará dentro de la propia función. Si la consulta se ejecuta con éxito, devolverá un objeto “mysqli_result”;y sino, devolverá directamente un “false”.

Permite constantes en los “traits”

Los traits son perfectos para reutilizar código entre clases. Actualmente permiten definir propiedades y métodos, pero no permite constantes.

Con esta actualización, ahora sí podrías hacerlo, y si quieres interiorizarte en esta RFC, revisa este artículo del wiki de PHP.

 

 

 

Algunas funciones a las que les debes decir adiós con PHP 8.2

En una actualización de PHP, todos sabemos que habrán incorporaciones y mejoras, pero a la vez, somos conscientes de que habrán funciones y maneras de hacer las cosas que cambiarán o desaparecerán.

Ya no más propiedades dinámicas

Hasta PHP 8.1, podías establecer y recuperar dinámicamente propiedades de clase no declaradas en PHP.

A partir de PHP 8.2, las propiedades dinámicas ya no estarán disponibles y establecer un valor a una propiedad de clase no declarada emitirá un “aviso de deprecación” la primera vez que se establezca la propiedad. Si tu código está lleno de propiedades dinámicas, y si quieres detener estos avisos de deprecación después de actualizarte a PHP 8.2, puedes utilizar el nuevo atributo “AllowDynamicProperties” de PHP 8.2 para permitir propiedades dinámicas en las clases.

Chau funciones “utf8_encode” y “utf8_decode”

Las funciones incorporadas de PHP utf8_encode() y utf8_decode() convierten cadenas codificadas en ISO-8859-1 desde y hacia UTF-8. Si llegas a invocarlas, verás estos errores como resultado de tu ejecución:

Deprecated: Function utf8_encode() is deprecated
Deprecated: Function utf8_decode() is deprecated

Deprecación de “${}” (interpolación de string)

PHP permite incrustar variables en strings con comillas dobles (“) y heredoc (<<<) de varias maneras, colocando directamente las variables (ejemplo: “$variable”); con llaves fuera de la variable, ejemplo: “{$variable}”; con llaves después del signo dólar, ejemplo: “${foo}”; variables de la variable, como: “${expr}”; o equivalente al uso de (string) ${expr}.

Las dos primeras formas tienen sus pros y sus contras, mientras que las dos últimas tienen una sintaxis compleja y conflictiva. PHP 8.2 depreca las dos últimas formas de interpolación de strings.

Funciones mbstring para Base64, QPrint, Uuencode y HTML

Las funciones mbstring (cadena multibyte) de PHP nos ayudan a trabajar con unicode, entidades HTML y otras codificaciones de texto heredadas. En PHP 8.2 se van a dejar de usar base64, uuencode, html y html-entities, y quoted-printable/qprint.

Cuando quieras usarlas, PHP arrojará un alerta de deprecación para estas funciones.

Eliminación de soporte “libmysql” de “mysqli”

PHP permite que los controladores “mysqli” y “PDO_mysql” se formen con las bibliotecas “mysqlnd” y “libmysql”, pero el favorito y recomendado siempre fue “mysqlnd”. Eliminando libmysql, se simplificará el código.

Conversión de casos independientes a la configuración regional

Antes de PHP 8, la configuración regional de PHP se heredaba del entorno del sistema y esto podía causar problemas en algunos sitios o apps. PHP 8 puso fin a este inconveniente estableciendo la configuración regional por defecto en “C”, a menos que el usuario la cambie explícitamente a través de “setlocale”.

PHP 8.2 eliminará la sensibilidad de la configuración regional, actualizando las funciones “strtolower”, “strtoupper”, y otras funciones relacionadas (ver lista completa). Como alternativa, si quieres utilizar la conversión de mayúsculas y minúsculas, puedes emplear “mb_strtolower”.

 

wordpress themes y plugins anulados nulled y pirata

 

 

Conclusión final

PHP 8.2 aún se está cocinando, a fuego lento, pero constante. Hoy, PHP 8.2 aún está en fase de desarrollo y “beta”, con lo que deberás aguardar un poco más para utilizarlo. De todas maneras, en cuanto esté listo, lo anunciaremos y ya podrás actualizarlo dentro de tu panel de control cPanel de tu hosting en WNPower. 👍

💡 En WNPower nos encargamos de mantener tu entorno de alojamiento web seguro y actualizado, de manera que no debas estar pensando en tu site y poder así enfocarte en tu negocio todo el tiempo. ¡Nuestras herramientas de hosting te ahorran muucho tiempo! ¿Ya las conocías?

 

Ver ofertas de hosting