Lanzamento da linguaxe de programación PHP 7.4

Despois dun ano de desenvolvemento presentado versión da linguaxe de programación PHP 7.4. A nova rama inclúe unha serie de novidades, así como varios cambios que rompen a compatibilidade.

Chave melloras en PHP 7.4:

  • Propiedades tipificadas - As propiedades de clase agora poden incluír declaracións de tipo, por exemplo:

    usuario de clase {
    público int $id;
    cadea pública $nome;
    }

  • Abreviado sintaxe para definir funcións "fn(lista_parámetros) => expr" con unión de ámbito por valor. Por exemplo, “fn($x) => $x + $y” é análogo a “$fn2 = function ($x) use ($y) {return $x + $y;}”);
  • Operador de asignación taquigráfica "??=" que se pode usar para definir un valor predeterminado ("a ??= b" é semellante a "a = a ?? b", se se define "a" gárdase o seu valor, e se non se define asígnaselle o valor "b" );
  • Limitado oportunidade preservar a xerarquía de herdanza dos tipos nos tipos de retorno derivados ou a capacidade de invertir a xerarquía dos tipos orixinais nos tipos de argumentos derivados (covarianza tipo de retorno e contravarianza do tipo de argumento). Agora pódense usar as seguintes construcións en PHP:

    clase A {}
    clase B esténdese A {}

    productor de clase {
    método de función pública (): A {}
    }
    clase ChildProducer estende Producer {
    método de función pública (): B {}
    }

  • Operador de desempaquetado dentro das matrices “…$var”, permitindo realizar a substitución de matrices existentes ao definir unha nova matriz;

    $partes = ['mazá', 'pera'];
    $fritos = ['plátano', 'laranxa', …$partes, 'anguria'];
    // ['plátano', 'laranxa', 'mazá', 'pera', 'anguria'];

  • Oportunidade representación visual de grandes números con delimitadores en literais numéricos (1_000_000_00);
  • Apoiar ligazóns débiles, que permiten conservar unha referencia a un obxecto, pero non impiden que o colector de lixo elimine o obxecto asociado;
  • Novo mecanismo serialización de obxectos (unha combinación de Serializable e __sleep()/__wakeup()), que substituíu a interface Serializable, que quedará obsoleta;

    // Devolve unha matriz que contén todos os estados do obxecto;
    función pública __serialize(): matriz;

    // Restaura o estado dun obxecto dunha matriz
    función pública __unserialize(array $data): void;

  • Permítese lanzar excepcións dun método __toString();
  • Engadido soporte para cargar previamente a caché de código obxecto. Parámetro engadido para a configuración
    opcache.precarga, a través do cal pode especificar un script PHP que se compilará e executará cando se inicie o servidor. Este script pode cargar o código de operación doutros ficheiros mediante a súa inclusión directa ou mediante a función opcache_compile_file();

  • Engadiuse a función crc32c á extensión Hash para calcular sumas de verificación usando o polinomio de Castagnoli;
  • Engadido soporte á función password_hash() para os métodos de hash de contrasinais argon2i e argin2id, na implementación da biblioteca Sodium, se PHP está construído sen libargon;
  • Engadiuse a función mb_str_split(), similar a str_split(), pero que opera non con bytes senón con posicións de caracteres nunha cadea de varios bytes;
  • A función strip_tags() agora ten a capacidade de pasar unha matriz con nomes de etiquetas, é dicir. en lugar de strip_tags($str, ' ') agora podes especificar strip_tags($str, ['a', 'p']);
  • proc_open() permite que os operandos sexan listados nunha matriz en lugar de executar unha cadea, e tamén proporciona redirección de fíos e soporte para un descritor de ficheiro nulo;

    proc_open(['php', '-r', 'echo "Ola mundo\n";'], $descriptores, $pipes);

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

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

  • As extensións Firebird/Interbase, Recode e WDDX están excluídas da distribución básica. Estas extensións distribúense agora a través de PECL;
  • Trasladado a categoría desactualizado características como operadores ternarios anidados sen parénteses, acceso a elementos da matriz e cadeas usando chaves ("$var{$idx}"), a función is_real() e a conversión a real, usando a palabra clave pai sen unha clase pai, o parámetro allow_url_include configuracións , usando array_key_exists() en obxectos.

    As funcións get_magic_quotes_gpc(), get_magic_quotes_runtime() e
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    Proporcionouse unha advertencia sobre o uso dunha función obsoleta ao intentar procesar símbolos incorrectos nas funcións
    base_convert(), bindec(), octdec() e hexdec(), e ao especificar un patrón que non sexa de cadea en mb_ereg_replace().

Fonte: opennet.ru

Engadir un comentario