¿Problemas de visión? En Tecsify nos importa la inclusión de personas con discapacidad, por eso, ahora puedes esuchar los articulos narrados en tiempo real
PHP es uno de los lenguajes de programación más fáciles de aprender. Con un buen tutorial de PHP y la motivación adecuada, puedes escribir tus primeros códigos de programación y ejecutar comandos en pocos minutos.
PHP 7 ya trajo consigo una gran optimización de la velocidad, lo que aumentó su prestigio. Con la versión 8.0, se produjo una gran actualización en el lenguaje de código abierto. Después de un año, otra pequeña actualización, la 8.1, está aquí.
¿Qué trae de nuevo PHP 8.1?
PHP 8.1 ha sido lanzado en versión beta y está siendo probado en la actualidad. La actualización definitiva no llegará hasta noviembre de 2021, pero ya se conocen las novedades:
- Enum: Las llamadas enumeraciones (enumeraciones con número determinado de valores) están ahora disponibles como tipo variable.
- Fibers: El nuevo tipo de bloque de código fibers te ofrece la posibilidad de ejecutar múltiples hilos de programa en paralelo.
- Arrays: Desde PHP 7.4 se pueden desempaquetar arrays con valores numéricos. Ahora esto también es posible para las matrices con cadenas.
- Readonly: A partir de ahora, las propiedades de las clases pueden marcarse como de solo lectura (‘readonly’), y, por tanto, ya no son modificables.
- Intersección: Los tipos de intersección (básicamente los homólogos de los tipos de unión) están ahora disponibles.
- Never: El nuevo valor de retorno ‘never’ indica que una función se termina y no devuelve ningún otro valor.
- Final: Ahora puedes marcar las constantes de la clase con ‘final’ para que no puedan ser modificadas por las subclases.
- Fsync: PHP 8.1 introduce las dos funciones ‘fsync’ y ‘fdatasync’ para sincronizar los datos del buffer al medio de almacenamiento.
- Octal: Para indicar el sistema numérico octal, además del ‘0’ (cero), se puede utilizar en el futuro el prefijo ‘0o’ (cero y O minúscula).
- Globals: El uso de ‘$GLOBALS’ ha sido ligeramente restringido y ahora resulta en un mensaje de error en algunos casos.
- Null: Las funciones internas ya no aceptarán valores nulos en argumentos no anulables.
También te puede interesar: ¡Aprende Python ya! La conclusión del Instituto de Ingenieros Eléctricos y Electrónicos (IEEE)
PHP JIT (Just in Time Compiler)
La característica más destacada que viene con PHP 8 es el compilador Just-in-time (JIT). ¿De qué se trata JIT?
La propuesta de la RFC describe el JIT de la siguiente manera:
«PHP JIT está implementado como una parte casi independiente de OPcache. Puede ser activado/desactivado en tiempo de compilación de PHP y en tiempo de ejecución. Cuando se habilita, el código nativo de los archivos PHP se almacena en una región adicional de la memoria compartida de OPcache y los manejadores op_array→opcodes[]. mantienen punteros a los puntos de entrada del código JIT».
Entonces, ¿cómo llegamos a JIT y cuál es la diferencia entre JIT vs. OPcache?
Para entender mejor lo que es JIT para PHP, echemos un vistazo rápido a cómo PHP se ejecuta desde el código fuente hasta el resultado final.
La ejecución de PHP es un proceso de 4 etapas:
- Lexing/Tokenización: Primero, el intérprete lee el código PHP y construye un conjunto de fichas.
- Análisis: El intérprete comprueba si el guión coincide con las reglas sintácticas y utiliza fichas para construir un Árbol de Sintaxis Abstracta (AST), que es una representación jerárquica de la estructura del código fuente.
- Recopilación: El intérprete atraviesa el árbol y traduce los nodos AST en opcodes Zend de bajo nivel, que son identificadores numéricos que determinan el tipo de instrucción realizada por el Zend VM.
- Interpretación: Los códigos ópticos se interpretan y se ejecutan en el VM Zend.
¿Habrá complicaciones con los códigos antiguos?
Puesto que PHP 8 es una nueva versión principal, hay que tener en cuenta que algunos códigos antiguos no serán compatibles. La mayoría de los cambios que podrían presentar complicaciones ya estaban obsoletos en las versiones 7.2, 7.3 y 7.4.
Los últimos cambios incluyen:
- The real type
- Magic quotes legacy
- array_key_exists() with objects
- FILTER_SANITIZE_MAGIC_QUOTES filter
- Reflection export() methods
- mb_strrpos() with encoding as 3rd argument
- implode() parameter order mix
- Unbinding $this from non-static closures
- hebrevc() function
- convert_cyr_string() function
- money_format() function
- ezmlm_hash() function
- restore_include_path() function
- allow_url_include ini directive
Si has mantenido tu código actualizado, no tendrás ningún problema, incluso teniendo la nueva actualización cambios incompatibles con versiones anteriores. En la página oficial del proyecto PHP puedes encontrar una lista completa con todos los cambios.
¡Danos tu opinión!