Comenzó la beta de PHP 8

Presentado la primera beta de la nueva rama del lenguaje de programación PHP 8. El lanzamiento está previsto para el 26 de noviembre. Al mismo tiempo, se han formado lanzamientos de corrección para PHP 7.4.9, 7.3.21 y
7.2.33, que corrigen errores acumulados y vulnerabilidades.

Principales novedades PHP 8:

  • Activación del compilador JIT, cuyo uso permitirá aumentar el rendimiento.
  • Soporte de argumentos nombrados en funciones, que permiten pasar valores a una función vinculados a nombres, es decir, se pueden pasar argumentos en cualquier orden y definir argumentos opcionales. Por ejemplo, «array_fill(start_index: 0, num: 100, value: 50)».
  • Al llamar a métodos se permite el uso del operador «?», que permite iniciar la llamada solo si el método está presente, lo que evita comprobaciones innecesarias para devolver «null». Por ejemplo, «$dateAsString = $booking->getStartDate()?->asDateTimeString()»;
  • Soporte tipos unión, que definen colecciones de dos o más tipos (por ejemplo «public function foo(Foo|Bar $input): int|float;»).
  • Soporte atributos (anotaciones), que permiten vincular metadatos (por ejemplo, información sobre tipos) a clases sin utilizar la sintaxis de Docblock.
  • Soporte para expresiones match, que a diferencia de switch pueden devolver valores, soportan el agrupamiento de condiciones, utilizan comparación de tipos estricta y no requieren indicar «break».

    $result = match($input) {
    0 => «hello»,
    ‘1’, ‘2’, ‘3’ => «world»,
    };

  • Sintaxis abreviada para la definición de clases, que permite combinar la definición del constructor y las propiedades.
  • Nuevo tipo de valores de retorno — static.
  • Nuevo tipo — mixed, que se puede usar para definir la recepción de parámetros de función con diferentes tipos.
  • Expresión throw para el manejo de excepciones.
  • WeakMap para crear objetos que se pueden recolectar con el recolector de basura (por ejemplo, para almacenar cachés opcionales).
  • Posibilidad de usar la expresión «::class» para objetos (análogo a la llamada a get_class()).
  • Posibilidad definición en el bloque catch de excepciones no vinculadas a variables.
  • Posibilidad omitir la coma después del último elemento en la lista de parámetros de la función.
  • Nueva interfaz Stringable para identificar cualquier tipo de cadena o datos que se puedan convertir a una cadena (para los que está disponible el método __toString()).
  • Nueva función str_contains(), análogo simplificado de strpos para determinar la inclusión de una subcadena, así como las funciones str_starts_with() y str_ends_with() para verificar coincidencias al inicio y al final de una cadena.
  • Se agregó la función fdiv(), que realiza la operación de división sin generar un error en caso de división por cero.
  • Se cambió la lógica de concatenación de cadenas. Por ejemplo, la expresión ‘echo «sum: » . $a + $b’ anteriormente se interpretaba como ‘echo («sum: » . $a) + $b’, mientras que en PHP 8 se procesará como ‘echo «sum: » . ($a + $b)’.
  • Se intensificó la verificación de operaciones aritméticas y bit a bit, por ejemplo, las expresiones «[] % [42]» y «$object + 4» generarán un error.
  • Se implementó un algoritmo de ordenamiento estable, donde se conserva el orden de aparición de valores idénticos en distintas ejecuciones.
  • Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster