← Back to list

A evolução do PHP

Bem, nesse pequeno artigo irei mostrar as principais atualizações do PHP (Hypertext Preprocessor) ao longo de suas versões assim como…

Arthurbandeirafc · 2025-07-04 01:16 · 0 claps · 5.1 min read
#php #linguagem #versões #laravel #zend
Open on Medium ↗
Wiki topics: 🧘 · Spirituality

A evolução do PHP

Bem, nesse pequeno artigo irei mostrar as principais atualizações do PHP (Hypertext Preprocessor) ao longo de suas versões assim como algumas depreciações devido à falhas de segurança reportadas pelos devs. Assim como linguagens mais mais maduras como o Java, o PHP teve seu devido amadurecimento ao longo do tempo, se adaptando às novas tecnologias do mercado e principalmente ouvindo o que os devs mais precisam em seus projetos profissionais e pessoais.

Para quem chegou aqui de paraquedas, o criador do PHP foi Rasmus Lerdof em 1994 e suas duas primeiras versões se estenderam até 1997. Com a expansão e utilidade da linguagem na web a primeira versão que se assemelha mais com a que temos hoje foi a 3.0 por volta de 1998.

PHP 4

Em 1998 o núcleo da linguagem foi reescrita por Andi Gutmans e Zeev Suraski chamado Zend Engine. Com esse novo mecanismo, por volta de 2000 foi incluido recursos como:

  • Suporte para maioria dos servidores web;
  • Sessões HTTP;
  • Saídas com buffer;

Fim do suporte versão 4: 08/08/2008

PHP 5

Essa versão teve seu lançamento em 2004 e pode ser considerada a mais “polêmica” de todas talvez, porém não deixa de ser também a que trouxe mais fama para a linguagem. Mas por quê a mais polêmica? E a resposta é: falhas de segurança. Sim houve muitas falhas de segurança/vulnerabilidades em suas versões 5.x.x, mas também ao decorrer dos anos os devs depuraram e foram levando as issues para equipe responsável. Vamos às principais versões:

5.3 (2019)

Melhora em torno de 2x em relação à versão 4 e inclui:

  • Espaços de nome (namespace);
  • Late Static Bindings (self::);
  • Classe Closure (funções anônimas).

Depreciação: ereg() e eregi() substituídos por preg_match().

5.4 (2012)

  • Remoção do register_globals;
  • Sintaxe abreviada de arrays: array();
  • Reuso de código com traits.

Depreciação: safe_mode e register_globals.

5.5 (2013)

  • Generators;
  • API de hashing de senhas: md5 e sha1;
  • Finally (executado após o try-catch).

Depreciação: mysql_* substituída por mysqli ou PDO.

5.6 (2014)

  • Argument unpacking: …$args;
  • Importação de funções e constantes com use;
  • Const em arrays.

Depreciação: operador @ e módulo mcrypt.

Fim do suporte versão 5: 31/12/2018

PHP 6

Curiosamente, o PHP 6 nunca foi lançado oficialmente como uma versão estável para o público. Ele é conhecido como a “versão pulada” na história do PHP. Suporte total a Unicode: Uma das principais metas do PHP 6 era a integração completa do Unicode, eliminando a necessidade de extensões como mbstring e iconv. Isso permitiria um melhor suporte a sistemas internacionalizados e melhoraria o desempenho. Embora o suporte total a Unicode não tenha sido implementado como planejado no PHP 6, algumas melhorias foram feitas em versões subsequentes

PHP 7

7.0 (2015)

  • Performance (2x mais rápido que PHP 5.6);
  • Operador Spaceship (<=>) e Null Coalescing (??);
  • Declarações de tipo escalares e declaração de tipo de retorno;
  • Classes anônimas.

Depreciação: o operador += não suporta strings e arrays, funções iconv_set_encoding() e mbstring.encoding_translation foram marcadas como obsoletas.

7.1 (2016)

  • Tipos anuláveis: ?string;
  • Tipo de retorno void;
  • Tratamento de esceções multi-catch:
} catch (FirstException | SecondException $e) {
  • Tipo iterável;

Depreciação: mcrypt removido, funções create_function(), each(), assert() com string, extensão mbstring.func_overload.

7.2 (2017)

  • Tipos de objeto com object;
  • Extensão Argon2 para hashing de senhas;
  • Melhorias no desempenho e proteção nas funções de hash de senhas e filtros de input.

Depreciação: create_function, each() e assert().

Essa versão melhorou bastante em questão de segurança para os desenvolvedores.

7.3 (2018)

  • Trailing commas em chamadas de função;
  • Função array_key_first(), array_key_last();
  • is_countable() para evitar warnings;
  • Sintaxe flexível com nowdoc e heredoc.

Depreciação: fgetss(), implode() com ordem errada dos argumentos.

7.4 (2019)

  • Typed properties em classes:
class User { public int $id; }
  • Operador de atribuição null coalescing (??=);
  • Preloading (melhoria de desempenho);
  • Spread operator em arrays (…);

Depreciações:

  • realType, mb_strrpos() com encoding inválido;
  • Avisos para variáveis indefinidas mais estritos;
  • unserialize_callback_func foi removida.

Fim do suporte versão 7: 28/11/2021

PHP 8

  • Tipos de união (Union Types):
function test(int|string $value) {}
  • Argumentos nomeados (Named Arguments):
foo(bar: 1, baz: 2);
  • Expressão match(substituo do switch);
  • Atributos (annotations):
#[Route('/home')]
  • Compilador JIT (Just In Time);
  • Nullsafe operator: $user?->profile?->name.

Depreciações:

  • Operador = para atribuição por referência foi desencorajado;
  • A função create_function() foi removida;
  • Magic quotes removidas completamente;
  • @ (error suppression) em algumas situações mais restritas.

8.1 (12/2021)

  • Fibers (base para corrotinas);
  • Readonly properties;
  • First-class callable syntax: foo(…);
  • Enums:
enum Status { case Active; case Inactive; }

Depreciações:

  • implode() com parâmetros invertidos;
  • mysqli::get_client_stats() obsoleto;
  • Warnings para fsockopen() inválido.

8.2 (12/2022)

  • Classes readonly:
readonly class Config {}
  • get_debug_type();
  • str_starts_with() e str_ends_with();
  • Constructor Property Promotion.

Depreciações:

  • strchr();
  • Dinâmicas em objetos do tipo stdClass e classes marcadas com #[AllowDynamicProperties];
  • Função utf8_encode() e utf8_decode().

8.3 (2023)

  • Atributos duplicados permitidos;
  • Dynamic class constant fetch:
($class::{$name})
  • Tipagem para constantes de classe:
final const string HOST = 'localhost';

Depreciações:

  • libxml_disable_entity_loader() obsoleta;
  • pg_connect() com SSL obsoleto.

8.4 (11/2024)

Novidades:

  • Property Hooks (Ganchos de Propriedade): Permitem definir comportamentos personalizados quando propriedades são lidas ou escritas, eliminando a necessidade de getters e setters redundantes para certos cenários. Isso ajuda a reduzir o código boilerplate e a melhorar a encapsulamento;
  • Asymmetric Visibility (Visibilidade Assimétrica): Agora você pode ter um nível de visibilidade diferente para leitura e escrita de uma propriedade. Por exemplo, uma propriedade pode ser public para leitura, mas private para escrita (public private(set) $prop;);
  • Atributo #[Deprecated]: Este novo atributo permite marcar funções, métodos de classe, constantes de classe e membros de Enum como depreciados diretamente no código. Isso gera um aviso de depreciação em tempo de execução quando o código é usado, orientando os desenvolvedores a migrar para alternativas mais recentes. É uma forma mais moderna de sinalizar funcionalidades obsoletas do que trigger_error();
  • Novas Funções de Array: O PHP 8.4 inclui novas funções para manipulação de arrays que simplificam operações comuns:
  • array_find(): Encontra o primeiro elemento de um array que satisfaz uma condição.
  • array_find_key(): Encontra a chave do primeiro elemento de um array que satisfaz uma condição.
  • array_any(): Verifica se algum elemento de um array satisfaz uma condição.
  • array_all(): Verifica se todos os elementos de um array satisfazem uma condição.
  • Instanciação de Objeto Simplificada: Agora é possível criar uma instância de um objeto e chamar um método nele diretamente, sem a necessidade de parênteses ao redor da instanciação: new MyClass()->method();
  • Nova Implementação JIT (Just-In-Time): Baseada no Framework IR (Intermediate Representation), visando melhorias de desempenho;
  • API DOM Atualizada com Suporte a HTML5: A extensão DOM foi aprimorada, incluindo a nova classe Dom\HTMLDocument e melhorias no parsing e serialização de documentos HTML5, resolvendo problemas de conformidade anteriores;
  • Novas Funções BCMath: Adição de bcceil(), bcdivmod(), bcfloor() e bcround() para operações de precisão arbitrária;
  • Novos Modos de Arredondamento em round(): O round() agora suporta novos modos de arredondamento através de um Enum RoundingMode (TowardsZero, AwayFromZero, NegativeInfinity, PositiveInfinity);
  • Extensões Movidas para PECL: Algumas extensões, como Pspell e IMAP, foram movidas do núcleo do PHP para PECL, o que significa que podem precisar ser instaladas separadamente;
  • Suporte a HTTP/3 no cURL: Novas constantes para suporte a HTTP/3;
  • Novas Funções para String (mbstring): mb_trim(), mb_ltrim(), mb_rtrim();
  • Novo método createFromTimestamp para DateTime e DateTimeImmutable.

Depreciações:

  • Declarações de parâmetros implicitamente anuláveis: Agora é necessário declarar explicitamente se um parâmetro pode ser null usando o tipo ?Type;
  • A constante E_STRICT: Esta constante de erro foi depreciada;
  • Chamadas a session_set_save_handler() com mais de 2 argumentos: O uso de 3 ou mais argumentos para esta função está depreciado;
  • Parâmetro $escape em funções CSV: O parâmetro $escape em funções como fputcsv() agora deve ser explicitamente fornecido;
  • Constantes SUNFUNCSRET*: Constantes relacionadas a funções solares foram depreciadas;
  • CURLOPT_BINARYTRANSFER: Esta opção do cURL foi depreciada;
  • (underscore) como nome de classe: Usar um único sublinhado () como nome de classe foi depreciado;
  • Potências negativas de zero: Operações como 0**-1 foram depreciadas;
  • md5() e sha1() para sessões: O uso dessas funções para hashing de IDs de sessão foi depreciado, incentivando o uso de alternativas mais seguras;
  • Mecanismos de rastreamento de sessão GET/POST: Essas formas antigas e inseguras de rastreamento de sessão foram depreciadas;
  • Funções específicas do MySQLi (mysqli_ping(), mysqli_refresh(), mysqli_kill()): Estas funções foram depreciadas;
  • lcg_value(): Esta função geradora de números aleatórios de baixa qualidade foi depreciada.

Fontes/referências:

Link: https://wiki.php.net/

Link: https://www.bem-vindo.net/


메타데이터
post_id
2a56cdbf86c5
slug
a-evolução-do-php-2a56cdbf86c5
url
https://medium.com/@arthurbandeirafc/a-evolu%C3%A7%C3%A3o-do-php-2a56cdbf86c5
canonical_url
https://medium.com/@arthurbandeirafc/a-evolu%C3%A7%C3%A3o-do-php-2a56cdbf86c5
author_url
https://medium.com/@arthurbandeirafc
status
ok
fetched_at
2026-07-19 04:09:58