Lançamento da linguagem de programação PHP 7.4

Após um ano de desenvolvimento apresentado lançamento de linguagem de programação PHP 7.4. A nova ramificação inclui uma série de novos recursos, além de diversas mudanças que quebram a compatibilidade.

Chave melhorias em PHP 7.4:

  • Propriedades digitadas - as propriedades da classe agora podem incluir declarações de tipo, por exemplo:

    classe Usuário {
    público int $id;
    string pública $nome;
    }

  • Abreviado sintaxe para definir funções “fn(parameter_list) => expr” com vinculação de escopo por valor. Por exemplo, “fn($x) => $x + $y” é análogo a “$fn2 = function ($x) use ($y) {return $x + $y;}”);
  • Operador de atribuição abreviada "??=" que pode ser usado para definir um valor padrão ("a ??= b" é semelhante a "a = a ?? b", se "a" for definido seu valor será armazenado, e se não for definido ele é atribuído o valor "b" );
  • Limitado oportunidade preservando a hierarquia de herança de tipos em tipos de retorno derivados ou a capacidade de reverter a hierarquia dos tipos originais em tipos de argumentos derivados (covariância tipo de retorno e contravariância do tipo de argumento). As seguintes construções agora podem ser usadas em PHP:

    classe A {}
    classe B estende A {}

    classe Produtor {
    método de função pública(): A {}
    }
    class ChildProducer estende Produtor {
    método de função pública(): B {}
    }

  • Operador de descompactação dentro de arrays “…$var”, permitindo realizar a substituição de arrays existentes ao definir um novo array;

    $partes = ['maçã', 'pêra'];
    $frutas = ['banana', 'laranja', ...$partes, 'melancia'];
    // ['banana', 'laranja', 'maçã', 'pêra', 'melancia'];

  • Oportunidade representação visual de números grandes com delimitadores em literais numéricos (1_000_000_00);
  • apoio elos fracos, que permitem manter uma referência a um objeto, mas não impedem que o coletor de lixo exclua o objeto associado;
  • Novo máquinas serialização de objetos (uma combinação de Serializable e __sleep()/__wakeup()), que substituiu a interface Serializable, que será obsoleta;

    // Retorna um array contendo todos os estados do objeto;
    função pública __serialize(): array;

    //Restaura o estado de um objeto de um array
    função pública __unserialize(array $data): void;

  • Permitido lançar exceções de um método __para sequenciar();
  • Adicionado suporte para pré-carregar o cache de código objeto. Adicionado parâmetro para configuração
    opcache. pré-carregar, através do qual você pode especificar um script PHP que será compilado e executado quando o servidor for iniciado. Este script pode carregar o opcode de outros arquivos através de sua inclusão direta ou utilizando a função opcache_compile_file();

  • Adicionada função crc32c à extensão Hash para calcular checksums usando o polinômio Castagnoli;
  • Adicionado suporte à função password_hash() para métodos de hash de senha argon2i e argin2id, na implementação da biblioteca Sodium, caso o PHP seja construído sem libargon;
  • Adicionada função mb_str_split(), semelhante a str_split(), mas operando não com bytes, mas com posições de caracteres em uma string multibyte;
  • A função strip_tags() agora tem a capacidade de passar um array com nomes de tags, ou seja, em vez de strip_tags($str, ‘’) agora você pode especificar strip_tags($str, [‘a’, ‘p’]);
  • proc_open() permite que os operandos sejam listados em um array, em vez de uma string para ser executada, e também fornece redirecionamento de thread e suporte para um descritor de arquivo nulo;

    proc_open(['php', '-r', 'echo "Hello World\n";'], $descritores, $pipes);

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

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

  • As extensões Firebird/Interbase, Recode e WDDX estão excluídas da distribuição básica. Estas extensões são agora distribuídas através do PECL;
  • Transferido para categoria desatualizado recursos como operadores ternários aninhados sem parênteses, acesso a elementos de array e strings usando chaves (“$var{$idx}”), a função is_real() e conversão para real, usando a palavra-chave pai sem uma classe pai, configurações de parâmetro permitir_url_include , usando array_key_exists() em objetos.

    As funções 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().

    Um aviso sobre o uso de um recurso obsoleto foi fornecido ao tentar processar símbolos incorretos em funções
    base_convert(), bindec(), octdec() e hexdec(), e ao especificar um padrão sem string em mb_ereg_replace().

Fonte: opennet.ru

Adicionar um comentário