Las pruebas beta de PHP 8 han comenzado

Presentado por la primera versión beta de la nueva rama del lenguaje de programación PHP 8. El lanzamiento está previsto para el 26 de noviembre. Al mismo tiempo, las versiones correctivas de PHP 7.4.9, 7.3.21 y
7.2.33, que eliminó errores y vulnerabilidades acumuladas.

El principal innovaciones PHP 8:

  • Включение compilador JIT, cuyo uso mejorará la productividad.
  • Apoyar argumentos de función con nombre, lo que le permite pasar valores a la función en relación con los nombres, es decir, Puede pasar argumentos en cualquier orden y definir argumentos opcionales. Por ejemplo, "array_fill(start_index: 0, num: 100, valor: 50)".
  • Al llamar a métodos permitido usando el operador "?", que le permite iniciar una llamada solo si el método está presente, lo que evita comprobaciones innecesarias para devolver el valor "nulo". Por ejemplo, "$dateAsString = $reserva->getStartDate()?->asDateTimeString()";
  • Apoyar tipos de unión, definiendo colecciones de dos o más tipos (por ejemplo, “función pública foo(Foo|Bar $input): int|float;”).
  • Apoyar atributos (anotaciones) que le permiten vincular metadatos (como información de tipo) a clases sin utilizar la sintaxis de Docblock.
  • Soporte de expresión partido, que, a diferencia de switch, puede devolver valores, admitir condiciones de combinación, utilizar comparaciones de tipos estrictas y no requiere una especificación de "interrupción".

    $resultado = coincidencia($entrada) {
    0 => "hola",
    '1', '2', '3' => “mundo”,
    };

  • Sintaxis abreviada definiciones de clase, lo que le permite combinar la definición de un constructor y propiedades.
  • Nuevo tipo de devolución - estático.
  • Nuevo tipo - mezclado, que se puede utilizar para determinar si una función acepta parámetros de diferentes tipos.
  • Expresión lanzar para manejar excepciones.
  • Mapa débil para crear objetos que puedan sacrificarse durante la recolección de basura (por ejemplo, para almacenar cachés innecesarios).
  • Oportunidad usando la expresión “::class” para objetos (análoga a llamar a get_class()).
  • Oportunidad definiciones en el bloque catch de excepciones que no están vinculadas a variables.
  • Oportunidad dejando una coma después del último elemento en la lista de parámetros de la función.
  • Nuevas interferencias Encadenable para identificar cualquier tipo de cadena o datos que se puedan convertir en una cadena (para los cuales el método __toString() está disponible).
  • Nueva caracteristica str_contains (), un análogo simplificado de strpos para determinar la aparición de una subcadena, así como las funciones str_starts_with() y str_ends_with() para verificar coincidencias al principio y al final de una cadena.
  • Característica añadida fdiv(), que realiza una operación de división sin arrojar un error al dividir por cero.
  • Cambió Lógica de unión de cadenas. Por ejemplo, la expresión 'echo "suma:" . $a + $b' se interpretaba anteriormente como 'echo ("suma: " . $a) + $b', y en PHP 8 se tratará como 'echo "suma: " . ($a + $b)'.
  • Apretado comprobar operaciones aritméticas y de bits, por ejemplo, las expresiones "[] % [42]" y "$object + 4" dará como resultado un error.
  • Implementado un algoritmo de clasificación estable en el que el orden de valores idénticos se conserva en diferentes ejecuciones.
  • Fuente: opennet.ru

Añadir un comentario