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…
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/
메타데이터
- 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