Lanzamiento del lenguaje de programación PHP 7.4

Después de un año de desarrollo presentado lanzamiento del lenguaje de programación PHP 7.4La nueva rama incluye varias características nuevas, así como algunos cambios incompatibles.

Llave mejoras en PHP 7.4:

  • Propiedades tipadas — Las propiedades de clase ahora pueden incluir declaraciones de tipo, por ejemplo:

    usuario de clase {
    público int $id;
    cadena pública $nombre;
    }

  • Abreviado La sintaxis de definición de funciones "fn(lista_de_parámetros) => expr" tiene un ámbito de valor vinculado. Por ejemplo, "fn($x) => $x + $y" es equivalente a "$fn2 = function ($x) use ($y) {return $x + $y;}");
  • operador de asignación de taquigrafía "??=", que se puede utilizar para definir un valor predeterminado ("a ??= b" es similar a "a = a ?? b", si "a" está definido, su valor se conserva y, si no está definido, se le asigna el valor de "b");
  • Limitado oportunidad preservar la jerarquía de herencia de tipos en los tipos de valor de retorno derivados de ellos o la posibilidad de transformar la jerarquía de los tipos originales a la opuesta en los tipos de argumento derivados (covarianza (contravariación entre el tipo de retorno y el tipo de argumento). Las siguientes construcciones ahora se pueden usar en PHP:

    clase A {}
    La clase B extiende A {}

    clase Productor {
    función pública método(): A {}
    }
    clase ChildProducer extiende Producer {
    función pública método(): B {}
    }

  • El operador de desempaquetado dentro de las matrices "...$var", permitiendo realizar la sustitución de las matrices existentes al definir una nueva matriz;

    $partes = ['manzana', 'pera'];
    $frutas = ['plátano', 'naranja', …$partes, 'sandía'];
    // ['plátano', 'naranja', 'manzana', 'pera', 'sandía'];

  • Oportunidad Presentación visual de números grandes con separadores en literales numéricos (1_000_000_00);
  • Apoyar enlaces débiles, que permiten conservar una referencia a un objeto, pero no impiden la eliminación del objeto asociado por parte del recolector de basura;
  • nuevo mecanismo serialización de objetos (una combinación de Serializable y __sleep()/__wakeup()), reemplazando la interfaz Serializable, que será declarada obsoleta;

    // Devuelve una matriz que contiene todos los estados del objeto;
    función pública __serializar(): array;

    // Restaura el estado de un objeto a partir de un array
    función pública __unserialize(array $data): void;

  • Permitir que se generen excepciones desde un método __Encadenar();
  • Se ha añadido compatibilidad con la precarga de la caché de código objeto. Se ha añadido un nuevo parámetro de configuración.
    opcache precarga, lo que permite especificar un script PHP que se compilará y ejecutará al iniciar el servidor. Este script puede cargar los opcodes de otros archivos incluyéndolos directamente o utilizando la función opcache_compile_file();
  • Se ha añadido la función crc32c a la extensión Hash para calcular sumas de comprobación utilizando el polinomio de Castagnoli;
  • La función password_hash() se ha actualizado para admitir los métodos de cifrado de contraseñas argon2i y argin2id en la implementación de la biblioteca Sodium si PHP se compila sin libargon;
  • Se agregó la función mb_str_split(), similar a str_split(), pero que opera no sobre bytes sino sobre posiciones de caracteres en una cadena multibyte;
  • La función strip_tags() ahora le permite pasar una matriz de nombres de etiquetas, es decir, en lugar de strip_tags($str, ' ') ahora puede especificar strip_tags($str, ['a', 'p']);
  • proc_open() permite listar operandos en una matriz en lugar de especificar una cadena para ejecutar, y también implementa la capacidad de redirigir flujos y admitir un descriptor de archivo nulo;

    proc_open(['php', '-r', 'echo "Hola Mundo\n";'], $descriptors, $pipes);

    // Como 2>&1 en la shell
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['redirect', 1]], $pipes);

    // como 2>/dev/null o 2>nul en la shell
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes);

  • Las extensiones Firebird/Interbase, Recode y WDDX se han eliminado de la distribución base. Estas extensiones ahora se distribuyen a través de PECL;
  • Transferido a la categoría obsoleto Características como operadores ternarios anidados sin paréntesis, acceso a elementos de matrices y cadenas usando llaves ("$var{$idx}"), la función is_real() y la conversión a real, el uso de la palabra clave parent sin una clase parent, la opción de configuración allow_url_include y el uso de array_key_exists() en objetos.

    Las funciones get_magic_quotes_gpc() y get_magic_quotes_runtime() han sido declaradas obsoletas.
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    Se proporcionó una advertencia sobre el uso de una función obsoleta al intentar procesar caracteres no válidos en las funciones.
    base_convert(), bindec(), octdec() y hexdec(), y al especificar un patrón que no sea una cadena en mb_ereg_replace().

Fuente: opennet.ru

Compre alojamiento confiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra alojamiento web fiable con protección DDoS, servidores VPS VDS | ProHoster