5 pontos por GN⁺ 2024-11-22 | 3 comentários | Compartilhar no WhatsApp
  • Inclui property hooks, visibilidade assimétrica, API DOM atualizada, melhorias de desempenho, correções de bugs e limpeza geral
    • Fornece property hooks que oferecem suporte a propriedades computadas, compreendidas nativamente por IDEs e ferramentas de análise estática
    • Introduz visibilidade assimétrica, permitindo controlar de forma independente o escopo de leitura e escrita das propriedades
  • Novos recursos
    • Por meio do atributo #[\Deprecated], agora é possível aplicar o mecanismo existente de descontinuação do PHP a funções personalizadas, métodos e constantes de classe
    • A nova API DOM inclui suporte compatível com os padrões para parsing de documentos HTML5 e corrige vários bugs antigos de compatibilidade nas funcionalidades do DOM
    • Com o objeto BcMath\Number, é possível tratar números de precisão arbitrária de forma orientada a objetos
    • Novas funções de array, como array_find(), array_find_key(), array_any(), array_all()
    • Novas subclasses de PDO: Pdo\Dblib, Pdo\Firebird, Pdo\MySql, Pdo\Odbc, Pdo\Pgsql e Pdo\Sqlite
    • Agora é possível acessar propriedades e métodos de objetos recém-instanciados sem parênteses
  • Novas classes, interfaces e funções
    • Novos Lazy Objects e implementação de JIT baseada no framework IR
    • Adição da função request_parse_body() e das funções bcceil(), bcdivmod(), bcfloor(), bcround()
    • Adição de métodos como DateTime::createFromTimestamp(), DateTime::getMicrosecond(), DateTime::setMicrosecond()
    • Adição das funções mb_trim(), mb_ltrim(), mb_rtrim(), mb_ucfirst(), mb_lcfirst()
    • Adição das funções pcntl_getcpu(), pcntl_getcpuaffinity(), pcntl_getqos_class(), pcntl_setns(), pcntl_waitid()
    • Adição dos métodos ReflectionClassConstant::isDeprecated(), ReflectionGenerator::isClosed(), ReflectionProperty::isDynamic()
    • Adição das funções http_get_last_response_headers(), http_clear_last_response_headers(), fpow()
    • Adição dos métodos XMLReader::fromStream(), XMLReader::fromUri(), XMLReader::fromString(), XMLWriter::toStream(), XMLWriter::toUri(), XMLWriter::toMemory()
    • Adição da função grapheme_str_split()
  • Descontinuações e quebras de compatibilidade
    • As extensões IMAP, OCI8, PDO_OCI e pspell foram removidas do bundle e migradas para o PECL
    • Tipos de parâmetro implicitamente anuláveis foram descontinuados
    • O uso de _ como nome de classe foi descontinuado
    • Elevar 0 a uma potência negativa foi descontinuado
    • Passar um modo inválido para round() agora gera ValueError
    • As constantes de classe das extensões agora têm tipo declarado
    • A classe GMP agora é marcada como final
    • Constantes e funções relacionadas ao MYSQLI foram descontinuadas
    • stream_bucket_make_writeable() e stream_bucket_new() agora retornam instâncias de StreamBucket
    • Alteração no comportamento de exit()
    • A constante E_STRICT foi descontinuada
  • Melhorias de desempenho e sintaxe
    • Melhorias de desempenho, aprimoramentos de sintaxe e maior segurança de tipos
    • Recomenda-se atualizar para o PHP 8.4.

3 comentários

 
carnoxen 2024-11-23

Graças ao WordPress e ao Laravel, é uma linguagem que pelo menos não vai morrer de fome.

 
budaestew 2024-11-23

É uma linguagem com a qual você não vai passar fome, mesmo que WordPress e Laravel entrem em declínio.

 
GN⁺ 2024-11-22
Comentários no Hacker News
  • O motivo de $this->countryCode não causar recursão infinita está especificado na RFC. Parece meio mágico que, no PHP, o acesso a propriedades possa ter significados diferentes dependendo do contexto.

    • Existe essa mágica da linguagem em que o acesso a propriedades é convertido em chamada de método.
    • Não sou usuário de PHP, mas me preocupa ver esse tipo de complexidade sendo adicionada à linguagem.
  • Como programador PHP, fico preocupado com a direção que o PHP está tomando. Novos recursos da linguagem aumentam a complexidade em troca de benefícios questionáveis.

    • Property hooks significam que o acesso a propriedades vira chamada de método.
    • Já usei algo parecido em JS e Perl, mas métodos explícitos são mais claros e mais fáceis de expandir.
  • Fico feliz em ver que o PHP continua prosperando. Em 2021, eu estava preocupado com a saída do Nikita Popov, mas o PHP continua sendo uma boa linguagem e ainda tem muitos desenvolvedores ativos.

  • O que mais me anima são os property hooks. Era um recurso do C# de que eu sentia falta.

    • Já tentei imitar isso com __get() e __set(), mas era pesado e exigia muitas anotações em PHPDoc.
  • Estava vendo sobre sobrecarga de acessadores de array quando encontrei "Property Hooks". Fiquei surpreso ao descobrir que é um recurso adicionado recentemente.

    • Acho ótimo que a expressividade e o açúcar sintático de outras linguagens estejam sendo incorporados ao PHP.
  • Estou satisfeito com o novo lançamento do PHP. Houve muitas melhorias, como stack traces melhores para closures, ganhos de desempenho, suporte a HTML5, lazy objects e mais.

  • Estou animado com os objetos de bcmath. Mais do que operadores aritméticos, gosto do fato de agora ser possível fazer verificação de tipo de dados sem classes wrapper.

  • Fico feliz em ver que o PHP continua evoluindo. Isso me faz lembrar de quando comecei como freelancer.

  • A nova função array_find do PHP mostra um problema de design da linguagem. Ela é parecida com a array_search já existente, mas a ordem dos argumentos é diferente.

    • Foi adicionada ao PHP porque outras linguagens têm funções assim, mas a maioria delas não as implementa como funções globais.
  • Não entendo "public private(set)". "readonly public" parece mais adequado.

    • Parece ser semelhante ao private(set) do Swift.