WordPress y PHP 8 – ¡Compatibilidad y beneficios!

Publicado: 2021-01-04

La mayoría de los fanáticos de la tecnología están entusiasmados con PHP 8.0 y, ciertamente, los cambios son enormes esta vez. todos van a consumir algo de tiempo para comprender la compatibilidad, las configuraciones, los beneficios, etc., de PHP 8, y entre todos, una de las preguntas más importantes que surgen es: "¿WordPress ya es compatible con PHP 8? y si no, entonces qué acciones son necesarias”.

WordPress y PHP 8 - ¡Compatibilidad y ventajas!

Bueno, tan pronto como se lanzó PHP 8, nuestro tiempo experto se sumergió en el nivel más profundo de prueba, ¡y el resultado puede sorprender a cualquiera! Sí, ahora lo sabemos todo y nos complace presumir de nuestros informes y resultados de las catas.

No solo mostraremos lo que ha cambiado, sino que también le daremos un consejo puro sobre si debe actualizar a PHP 8 o no.

Tantos cambios importantes en PHP 8: ¿Pero por qué?

PHP 8 es una gran actualización de PHP, y es una práctica común eliminar los negativos en las versiones principales de la gama reciente de versiones secundarias. Para el muy comentado PHP 8, se han reducido varios cambios importantes en las versiones anteriores de 7.*.

Por lo tanto, para los proyectos que se actualizaron atentamente a lo largo de los años, reparando sus API derogadas, no debería ser difícil actualizar en absoluto. A decir verdad, las versiones de PHP 7.* han observado un conjunto mucho mayor de obsolescencias en contraste con las versiones anteriores de PHP.

Diríamos que PHP 5.6 a PHP 7 fue una migración bastante simple, pero pasar de 7.xa 8 podría ser algo doloroso, especialmente para las antiguas bases de código, incluido WordPress, además de varios complementos disponibles.

Ciertamente, para bases de código bien tipeadas o bases de código actualizadas con las últimas versiones de PHP, no ocurrirán grandes problemas. Sin embargo, la realidad es que WordPress no es una base de código de este tipo.

¿WordPress ya es compatible con PHP 8?

Honestamente, tal vez WordPress ya sea compatible con PHP 8, pero no es posible sellar esas palabras. WordPress apunta a ser siempre compatible con las últimas versiones de PHP . Sin embargo, hemos analizado en profundidad las principales preocupaciones más adelante en esta guía.

Wordpress-y-PHP-Compatibilidad2

Hemos hecho un trabajo increíble para encontrar las soluciones perfectas para la mayoría de los problemas de compatibilidad que se pueden encontrar usando las estrategias disponibles. Sin duda, profundizaremos más en lo que había allí y los problemas que existen con ellos.

¿Qué cambios de rendimiento se avecinan?

La principal característica potencialmente emocionante que llega con PHP 8 es la compilación y depuración JIT (Just In Time). Como sabemos, PHP es un lenguaje interpretado, lo que significa que se traduce a código de máquina cuando se ejecuta.

JIT rastrea el código que se usa con frecuencia y trabaja para optimizar la traducción del código de máquina para que sea reutilizable. Ahora, esto puede resultar en una gran mejora en el rendimiento de una funcionalidad dada.

La inclusión de JIT en varios lenguajes, por ejemplo, JavaScript, ha llevado históricamente a una explosión de nuevas aplicaciones. Por ejemplo, las máquinas virtuales que se ejecutan en JS habrían quedado fuera de la imaginación en los primeros días de la web. Algunas tareas que habrían necesitado la instalación de módulos en el servidor en el pasado serán prácticas utilizando las bibliotecas básicas de PHP.

Por el momento, la elevación del rendimiento real de las aplicaciones web como WordPress es mínima. Además de eso, pasará mucho tiempo antes de que un desarrollador o un usuario promedio de WordPress obtenga las ventajas de esta nueva función.

Hay varias otras características nuevas para facilitar la vida de los desarrolladores; es poco probable que estos se usen en temas y complementos de WP en el futuro previsible porque la mayoría rompería la compatibilidad con las versiones anteriores de PHP que aún usan varios sitios de WordPress.

¿Cómo actualizar PHP para su sitio de WordPress?

En esta guía, describiremos cuán convenientemente puede actualizar PHP a la última versión, lo más importante, sin romper su sitio de WordPress.

Si está ansioso por conocer la ruta, simplemente verifique su versión actual de PHP, luego actualice WordPress a la versión más reciente. Después de eso, instale el "escáner PHP one.com" y ejecute un escaneo para solucionar posibles problemas. Además, actualice PHP a la última versión y verifique si su sitio funciona como se esperaba o no.

Vamos a mostrar todo el proceso.

Paso 1: Verifique su versión actual de PHP

Al principio, debe verificar con qué versión de PHP está trabajando actualmente. Puede obtener la información de la versión PHP actual de su sitio web desde la página phpinfo.

Si está ejecutando cPanel, puede ver la versión de PHP en el artículo cómo ver y cambiar la versión de PHP en cPanel.

En caso de que esté utilizando PHP versión 7.3 o superior, entonces todo está bien. Para aquellos que tienen PHP 7.2, se necesita una actualización. Por favor, aprecia el paso 2.

Paso 2: Actualiza WordPress a la última versión

Asegúrese de que el núcleo de WordPress y todos los complementos y temas estén actualizados a la última versión si realmente desea evitar cualquier mal funcionamiento.

  1. Inicie sesión en su administrador de WordPress y haga clic en Panel de control > Actualizaciones .
  2. Compruebe si tiene instalada la última versión de WordPress y si todos los temas y complementos están actualizados. Actualice su WordPress a la última versión ahora.

Paso 3: Instale el "escáner PHP de one.com".

  1. En su administrador de WordPress , toque one.com > Complementos .
  2. Localice el escáner PHP de one.com y toque Instalar ahora .
  3. Ahora, haga clic en Activar y avance al siguiente paso.

Paso 4: Ejecute un análisis y solucione posibles problemas

  1. En el menú de la izquierda, toca Escáner de PHP .
  2. Toca PHP versión 7.4 , luego " Todos los temas y complementos " y luego toca Iniciar escaneo .
  3. Puede continuar una vez que finalice el escaneo.
  4. Puedes tener tres resultados:

Compatible = ¡Significa que todo está bien!

Advertencia = Significa que debería funcionar, pero podría dar problemas con la próxima versión de PHP.

Error = No es tan bueno, ciertamente causará problemas después de la actualización.

Solucione cualquier tema o complemento que lea errores, ya sea actualizándolo a la última versión o reemplazándolo con un complemento alternativo que proporcione la misma funcionalidad.

Consejo: le recomendamos que use solo esos complementos, use complementos que se actualicen regularmente y no traigan problemas de compatibilidad con la última versión de WordPress. Además de eso, es una buena práctica eliminar los complementos no deseados para mejorar el rendimiento del sitio.

Paso 5: Actualice PHP a la versión 8.0

Ya está todo listo para actualizar PHP. Recomendamos activar los mensajes de error de PHP simultáneamente. En caso de que haya un problema con el código, verá mensajes de error que le indicarán qué lo está causando y también dónde se encuentra exactamente.

  1. En el panel de control, regrese a la configuración de PHP y base de datos .
  2. Desplácese hacia abajo hasta Mensajes de error de PHP .
  3. Haga clic en Actualizar después de configurar los mensajes de error en Activado .
  4. Directamente debajo de esto, cambie la versión y toque Actualizar .

Paso 6: Verifique si su sitio web funciona como se esperaba.

Ahora, tiene la versión de PHP actualizada y tomará un mínimo de 20 minutos antes de que se apliquen los cambios. Si su sitio recibe muchos visitantes, el período de tiempo puede extenderse incluso a varias horas. Esa es la razón por la que recomendamos revisar su sitio web un par de veces como mínimo durante las próximas 24 horas.

En caso de que su sitio no funcione en contra de lo que esperaba, entonces el problema más probable es su tema o cualquier complemento. Para averiguar qué es exactamente lo que está causando problemas:

  1. Cambia temporalmente al tema predeterminado de WordPress, diríamos, "Twenty Seventeen".
  2. Seleccione todos los complementos instalados y desactívelos por completo.
  3. Habilite los temas y todos los complementos nuevamente, uno por uno, y siga verificando cada vez si su sitio aún funciona o no. Puedes atrapar al culpable de esta manera.

Si hablamos técnicamente, entonces la compatibilidad de la actualidad de WordPress con el muy discutido PHP 8 está en un nivel similar al que habitamos en los lanzamientos de WordPress justo antes de que aparezca una nueva versión de PHP.

Nuestras pruebas fueron tan sustanciales, la solución fue tan meticulosa y el nivel de solución de problemas fue tan grande como cualquiera de las soluciones de compatibilidad de PHP dentro del núcleo de WordPress. Sin embargo, si no sigue esta guía, no podrá comprender los desafíos de compatibilidad y obtener los máximos beneficios de PHP 8.

La gran cantidad de cambios importantes y los tipos de cambios incluidos en PHP 8, además de algunas complejidades adicionales en las herramientas de versiones cruzadas, ciertamente hacen que este desafío de compatibilidad sea una bestia mayor de lo que hemos experimentado antes con las versiones anteriores de PHP. Este informe tiene como objetivo explicar el mismo caso.

Desafíos de compatibilidad de WordPress y PHP8

Le mostraremos algunas estrategias que puede implementar para hacer que un código base existente sea compatible con PHP 8.

  • Herramientas de análisis estático como PHPCompatibility para detectar problemas sintácticos.
  • Pruebas automatizadas para detectar problemas de tiempo de ejecución.
  • Pruebas manuales para detectar problemas de tiempo de ejecución.

Dependiendo de la cobertura de su conjunto de pruebas y la proporción de cambios sintácticos y tiempo de ejecución, estas estrategias sirven muy bien para arreglar la compatibilidad del código base con una nueva versión de PHP (actualmente discutiendo PHP 8).

Verdaderamente, en el caso de PHP 8 y ​​WordPress, existen algunos desafíos adicionales que hacen que sea difícil confiar en estas estrategias para garantizar la perfecta compatibilidad de WordPress con PHP 8. A continuación, informaremos sobre las estrategias que hemos implementado. para WordPress y comparte los resultados.

Herramientas de análisis estático

Debido a la naturaleza de algunos cambios en PHP 8.0, los problemas que se pueden detectar mediante el análisis estático son limitados. En esas circunstancias, donde el análisis estático busca ir más allá de sus potenciales tradicionales y planea rastrear el valor de las variables y constantes y el tipo de tiempo de ejecución, los resultados de dichos análisis ciertamente serán propensos a falsos positivos.

Herramientas de análisis estático

Además de eso, PHP Compatibility es la única herramienta de análisis estático destinada a encontrar problemas relacionados con la compatibilidad entre versiones de PHP.

Además de la compatibilidad con PHP, otras herramientas de análisis estático informan sobre una gama más amplia de problemas. Apreciar los resultados para detectar los problemas, que están relacionados con la compatibilidad entre versiones de PHP y son realmente correctos, lleva bastante tiempo y necesita un conocimiento profundo relacionado con las herramientas, especialmente sobre cómo configurarlas para la menor cantidad de ruido.

Simultáneamente, estas herramientas están en constante inestabilidad, tratando de seguir adelante con los cambios en la versión de PHP y actualizando los posibles escaneos. Por lo tanto, podemos esperar que estas herramientas detecten aún más problemas en el futuro próximo.

Por lo tanto, independientemente de lo que ya se haya encontrado y lo que se pueda encontrar en este momento, lo más probable es que estas herramientas aún encuentren más problemas en el futuro (cercano).

Escaneando WordPress con PHPCompatibility

“__destruct() ya no se llamará después de die() en __construct()” es otro problema de PHP 8 encontrado por PHPCompatibility. Esto es perfectamente detectado por el escáner. Sin embargo, tras un análisis más profundo, se ha descubierto que no es problemático en este caso.

Además de eso, PHPCompatibility detectó un problema en el código que usa el "editor de complementos/temas". Los análisis del código involucrado han determinado la existencia de una supervisión subyacente en el código. En el editor, WordPress espera hacer un análisis mínimo del código; sin embargo, no tiene en cuenta el código PHP 5.3+.

Si bien se tienen en cuenta los cambios relevantes en PHP8, este descuido ahora se vuelve más complejo de resolver. Ejecutamos escaneos con PHPCompatibility con la versión desarrollada y los resultados, como esperábamos, fueron muy diferentes de los que obtuvimos con las actualizaciones anteriores de PHP. Los problemas detectados por el escáner se mantienen externamente.

Escaneando WordPress con Exakat

Hablando sobre el último escaneo público que tuvo lugar el 16 de octubre, basado en el troncal de WP, Exakat informa 149.567 problemas en total.

El informe de compatibilidad de PHP 8 nos muestra un total de 93 problemas. Sin embargo, está incompleto ya que no se incluye un número de análisis relevante para PHP 8 en el informe.

Si bien esperamos que estos informes contengan una gran cantidad de falsos positivos porque WordPress no usa declaraciones de tipo y, por lo tanto, los tipos se extrapolan del código que se encuentra y los tipos que se muestran en docblocks, estos problemas aún deben examinarse individualmente.

No importa si solo el 1% de los problemas encontrados es correcto, eso aún disminuiría a ~ 450 errores, que aún deben solucionarse. Además de eso, la gran cantidad de tiempo requerido para eliminar los problemas auténticos de los falsos positivos.

Escaneando WordPress con PHPStan

Los escaneos con PHPStan requieren un conjunto de reglas totalmente personalizado para lograr resultados utilizables de forma remota y, aún así, demuestran estar plagados de algunos falsos positivos, lo que hace que la salida sea inutilizable.

Nota: no estamos criticando las herramientas de PHPStan, pero se debe en gran medida al hecho de que WordPress apenas usa declaraciones de tipo, mientras que, por otro lado, PHPStan se inclina principalmente hacia proyectos que usan código moderno, ¿no es así?

Un escaneo inicial que comprenda las configuraciones más básicas arrojará más de 20 000 problemas. Un escaneo con el conjunto de reglas altamente personalizado mencionado anteriormente, dirigido específicamente a problemas relacionados con PHP 8, arroja exactamente 580 problemas en el nivel 5 y 2.150 problemas potenciales adicionales en el nivel 7. Es probable que contengan algunos falsos positivos y, sin embargo, arrojen 380 problemas más. en el nivel 8 con una advertencia similar.

Recientemente se abrió un ticket de Trac para abordar una lista de problemas sobre la base de una configuración desconocida, pero no coincidían totalmente los tipos de parámetros pasados ​​(nivel 5). Draft PR está disponible para solucionar estos problemas.

Una evaluación inicial de este PR indica que la mayoría de las correcciones propuestas encasillarían las variables al tipo esperado y ocultarían los problemas, en lugar de solucionarlos comprobándolos correctamente. Esto genera un comportamiento inesperado en la aplicación en caso de que estos cambios no vayan acompañados de pruebas unitarias estrictas. Además de eso, tit probablemente resulte en una dificultad creciente al depurar errores más adelante con seguridad.

Actualmente, no se confirma si las correcciones propuestas están justificadas o si los problemas identificados deben observarse como falsos positivos.

Pruebas

El análisis estático puede ir tan lejos debido a la naturaleza de los intercambios problemáticos en PHP8. La revisión y prueba manual del software demuestra ser un trabajo muy minucioso, y los humanos también son bastante propensos a pasar por alto las cosas cuando hay mucho que buscar.

Ahora, hablando de las pruebas realizadas por los usuarios finales, resultan relativamente inútiles, ya que esto normalmente dará como resultado que se prueben "caminos felices". Si queremos lograr resultados más confiables, entonces necesitamos pruebas exploratorias y de regresión integrales.

Pruebas

Tener pruebas automatizadas de alta calidad y ejecutarlas en PHP 8 es más importante que nada. Esto ofrecerá la indicación perfecta del problema de PHP 8.0 que se espera.

La mayoría de los fanáticos de la tecnología están entusiasmados con PHP 8.0 y, ciertamente, los cambios son enormes esta vez. todos van a consumir algo de tiempo para comprender la compatibilidad, las configuraciones, los beneficios, etc. de PHP 8, y entre todos, una de las preguntas más importantes que surgen es: "¿WordPress ya es compatible con PHP 8 y, de no ser así, qué acciones Se necesitan."

Bueno, tan pronto como se lanzó PHP 8, nuestro tiempo experto se sumergió en el nivel más profundo de prueba, ¡y el resultado puede sorprender a cualquiera! sí, sabemos todo ahora, y sentimos placer de hacer alarde de nuestros informes y resultados de las pruebas.

Pasemos ahora a Ejecutar pruebas automatizadas en PHP 8.

Ejecutando pruebas automatizadas en PHP 8

PHPUnit 9.3 es la primera versión de PHPUnit que es oficialmente compatible con PHP 8.0 y se lanzó en agosto de 2020. Bueno, ejecutar un conjunto de pruebas automatizado que se ejecuta en PHP es difícil porque es la herramienta de facto para las pruebas unitarias.

corriendo-automatizado

Obtener un conjunto de pruebas automatizado para ejecutarse en PHP 8 nos lleva al siguiente agujero de conejo como la herramienta de facto para realizar la prueba unitaria en el mundo de PHP; PHPUnit normalmente hace un gran lanzamiento cada año, con cada lanzamiento importante de soporte para versiones anteriores de PHP. Introduce cambios importantes, pero como PHPUnit 9.3 es oficialmente compatible con PHP 8.0, como mencionamos anteriormente, ¡no hay necesidad de preocuparse!

Sabemos que, como mínimo, WordPress todavía es compatible con PHP 5.6. Para ejecutar pruebas en PHP 8.0, cualquier conjunto de pruebas relacionado con WordPress debe ser totalmente compatible con PHPUnit 5 hasta PHPUnit 9. Ciertamente, las herramientas están diseñadas para ayudarlo con eso; Todavía consume esfuerzo y tiempo implementar estas herramientas para hacer que un conjunto de pruebas sea compatible.

Ejecutando las pruebas en PHP8 para WordPress Core

Las pruebas para WP Core actualmente están pasando y ejecutándose en PHP 8. Estas pruebas se realizan en la versión instalada del compositor de PHPUnit 7.5. Aunque PHPUnit 9.3 es la versión más antigua de PHPUnit que es oficialmente compatible con PHP 8.

Este último problema se solucionó copiando una cantidad seleccionada de archivos/clases de PHPUnit 9.3 al conjunto de pruebas de WordPress, excluyendo las clases nativas de PHPUnit de la generación de carga automática de Composer, lo que admite el uso de copias de PHPUnit 9.3 en el conjunto de pruebas de WordPress. Esto funciona, por ahora, sin embargo, lo llamaríamos una solución hacky, y puede que no sea sostenible en el futuro, además del mantenimiento que puede necesitar actualmente.

En aras de la calidad de las pruebas, esto fue ciertamente bajo al principio, y en la mayoría de los casos se utilizó la verificación de tipos sueltos.

Profundizando más, se abrió un ticket de Trac para abordar esto en 2016. Teniendo en cuenta el cumplimiento de tipo más estricto en PHP, este ticket se ha restaurado. Se ha trabajado mucho para mitigar esto.

Mientras escribimos, hay alrededor de 800 instancias (676 afirmarEquals() agregado a 96 afirmarNoEquals()). Todavía utiliza la verificación de tipos sueltos, por debajo de 8000+ instancias.

En parte, las afirmaciones de tipos sueltos que quedaban son legítimas cuando se comparan objetos; en parte, estos ciertamente necesitan ser abordados. Sin embargo, actualmente conduciría a fallas en las pruebas. Estos últimos subrayan deficiencias ya sea en las pruebas, aunque más ocasionalmente, en el código que se está probando.

Prueba de temas y complementos

Solo hay un pequeño porcentaje de los complementos disponibles, los desarrollados profesionalmente y más populares y tienen pruebas automatizadas. En términos generales, esto es preocupante ya que un sitio normal de WordPress ejecuta casi 19 o 20 complementos con seguridad. ¡Muchos sitios continúan con aún más complementos! Tener pruebas automatizadas para temas es aún más raro.

Es un desafío permitir que estos conjuntos de pruebas se ejecuten en la versión 8 de PHP. Y también antes de que se pueda obtener información sobre la compatibilidad de complementos y temas con PHP 8.

Sin embargo, los complementos/temas que tienen son en su mayoría aquellos en los que se puede esperar la cantidad mínima de problemas de PHP 8.0. Lo exclamamos porque dichos temas/complementos utilizan un modelo de desarrollo profesional.

La mayor causa de preocupación es la multitud de pruebas y temas sin pruebas, ya que son más propensos a ser problemáticos cuando se ejecutan con PHP 8.

Para temas y complementos, que tienen pruebas, existen principalmente dos tipos de pruebas que pueden o no tener en su lugar:

  • Pruebas unitarias . Pruebas independientes que "burlan" de WP para permitir la prueba del código del complemento. Se utilizan marcos populares como BrainMonkey y Mockery .
  • Pruebas de integración . Ahora, las pruebas de integración son donde WordPress se carga antes de que ejecutemos el conjunto de pruebas, y utilizará el código WPcore y se integrará con el conjunto de pruebas de WP.

Pruebas de integración

Sabemos que WordPress ha decidido quedarse con PHPUnit 7.5. ¿Qué significa eso?

Bueno, para las pruebas de integración de temas y complementos, estos también se saltarán a PHPUnit 7.5 (máximo).

Los temas y complementos tendrán que copiar el truco en WP Core para que sus pruebas de integración funcionen perfectamente o, alternativamente, tendrán que usar los archivos en WP Core. Sin embargo, luego tendrán que crear un cargador automático personalizado porque no se puede usar el mismo truco de generación de carga automática de Composer.

Si es necesario evitar que los archivos nativos de PHPUnit se carguen de todos modos, dicho cargador automático personalizado tendrá que ser reiniciado justo antes del archivo de carga automática de Composer.

Pruebas unitarias

Para pruebas unitarias con la ayuda de Mockery o BrainMonkey, se requiere PHPUnit > 8 ya que el marco Mockery disponible para PHPUnit 7.x no es compatible con PHP 8.0. Por lo tanto, la comparabilidad de estos conjuntos de pruebas es obligatoria con PHPUnit 5 hasta 9, lo que sin duda agrega otro desafío.

¿Cómo?

Se requieren diferentes versiones de PHPUnit para ejecutar cada conjunto de pruebas cuando se utilizan ambos tipos de conjuntos de pruebas. Para agravar esta circunstancia, los complementos normalmente tendrán un archivo composer.lock comprometido para garantizar que sus dependencias de tiempo de ejecución estén en una versión determinada en la que puedan confiar y que sea totalmente compatible con PHP 5.6.

Pruebas unitarias

En ciertos momentos, esta última parte se aplica al tener un tipo de configuración de plataforma php 5.6 en el archivo composer.json. Eso también significa que sus dependencias de desarrollo, BrainMonkey, Mockery, PHPUnit, también se bloquearán en una versión compatible con PHP 5.6. ahora, eso seguramente evitaría ejecutar pruebas en PHP 8.0.

Puede superar eso eliminando la plataforma sobre la marcha además de actualizar los archivos composer.lock y composer.json. Sin embargo, esto hace que ejecutar las pruebas en PHP 8.0 sea más complicado, tanto en CI como localmente, para sus desarrolladores.

La compatibilidad con PHP 8 se ve algo complicada en sitios grandes de WordPress

Simplemente investigando una cadena de cambios importantes en PHP 8, pudimos confirmar que esto es propenso a causar grandes interrupciones en los sitios con una razón poco clara para esa interrupción. En ciertos momentos, el error ocurrirá en un lugar, pero lo generará un tema o complemento en un lugar diferente, y eso ciertamente haría que estos problemas fueran bastante difíciles de depurar.

accuwebhosting.com es sin duda un sitio de WordPress mantenido activamente, y un equipo dedicado de desarrolladores profesionales lo respalda. La gran mayoría de los sitios de WordPress no tienen ese lujo, y mitigar los problemas de compatibilidad en estos sitios seguramente será un desafío.

¿Cuánto tiempo tienen los desarrolladores para actualizar?

El ciclo de vida de cada versión de PHP es de 2 años, y los errores se corrigen en esta era. Se añade un año más durante el cual se parchean los problemas de seguridad. PHP 7.4 llegó en noviembre de 2019. Era la versión final de PHP 7. Significa que los errores en PHP 7.4 se solucionarán hasta noviembre de 2021. Los problemas de seguridad se corregirán hasta noviembre de 2022. Llegará a su "Fin de vida" en ese momento.

los desarrolladores tienen que actualizar

Por lo tanto, la fecha límite es noviembre de 2022: todo el código PHP debe ser compatible con PHP 8 en ese momento, o existe el peligro de quedarse atascado en una versión de PHP potencialmente vulnerable.

Conclusión

PHP 8 contendrá numerosos cambios importantes. Hemos descrito una buena variedad de esos cambios en nuestro informe, los que, según suponen nuestros expertos, tendrán un mayor impacto en WordPress además del ecosistema de WordPress en general. Esos generalmente tienen que lidiar con advertencias que se convierten en problemas. Y se introducen varios errores, que pueden ser difíciles de manejar. Puede detectar un mayor porcentaje de estos cambios en el tiempo de ejecución.

Resolver todos estos problemas de compatibilidad es una tarea enorme. Para lograrlo, debe utilizar una variedad de estrategias, desde el análisis estático hasta las pruebas automatizadas. Requiere mucho tiempo + esfuerzo.

Debe tener el derecho a la herramienta para llevar a cabo todo a la perfección. Para proyectos como WordPress, que tienen que admitir una variedad de versiones de PHP, se introducen varias complejidades adicionales al hacer malabarismos con varias versiones de las herramientas de análisis, como discutimos anteriormente.

Ciertamente, se vuelve bastante difícil debido a que el tiempo de ejecución y las diferencias sintácticas entre PHP 5 y 8 son increíblemente grandes.

¿Usar PHP 8 en WordPress es bueno o no? En realidad no es el argumento aquí. La única conclusión aquí es que se vuelve muy desafiante hacerlo.

Además, hemos considerado el tema de la cobertura y las dependencias PHP de WordPress. Si desea detectar la compatibilidad de manera confiable, entonces se necesita una alta cobertura de prueba. Y hablando de PHP 8, es aún más importante porque la cantidad de problemas de compatibilidad es mayor de lo habitual. Un porcentaje importante de ellos se puede detectar solo en tiempo de ejecución.

Entonces, ¿qué te aconsejamos?

Si se detectan problemas, se requiere una depuración exhaustiva para encontrar la raíz del problema, sin importar si es WordPress, Theme, Plugin o si está asociado directamente con la compatibilidad con PHP.

La cobertura de prueba está prácticamente ausente para las dependencias y es baja. Por lo tanto, es difícil exclamar cuál es la compatibilidad del núcleo de WordPress con PHP 8 en un sentido real.

Debido a que PHP 8 se concentra tan profundamente en la tipificación estricta, el sistema de extensibilidad inseguro de tipos de WP se vuelve más vulnerable a los problemas, lo que puede llevar a que los complementos generen errores de tipo en otros complementos o en WP mismo.

Pusimos esto a prueba mediante la ejecución de un análisis de los datos de error del último mes. Como un sitio enorme, pensamos que podría dar una fuerte indicación de los tipos de problemas que podemos esperar. Ciertamente, encontramos varias advertencias que se convertirán en errores con PHP 8.

Preferimos hacer una nota final aquí. WordPress no es la única base de código heredada disponible. Además, no es el único proyecto que tiene como objetivo admitir una amplia gama de versiones de PHP. La información de este artículo también podría aplicarse a otros proyectos.

El objetivo principal de este artículo de Accuweb es informar y hacer una descripción general de los desafíos y problemas relacionados con la compatibilidad con PHP 8 en WP. Esperamos que sirva perfectamente para este propósito.