PHP, conhecido como Hypertext Preprocessor (Pré-processador de Hipertexto), é uma linguagem de script do lado do servidor. É usado principalmente para desenvolvimento web e foi lançado pela primeira vez em 1995 por Rasmus Lerdorf. Desde então, o PHP teve diversas versões, cada uma com melhorias e mudanças significativas. Vamos dar uma olhada na evolução do PHP desde sua concepção até o PHP 8, a última versão conhecida até setembro de 2021.
Versões do PHP e principais alterações
PHP/FI (Personal Home Page / Forms Interpreter) 1.0 (Lançado em 1995)
A primeira versão do PHP, então conhecida como PHP/FI, foi desenvolvida por Rasmus Lerdorf. Na época, o PHP era um conjunto simples de scripts CGI em Perl que ajudavam Lerdorf a manter seu currículo pessoal e coletar certos dados. Foi somente quando Lerdorf combinou esses scripts com C para formar o PHP/FI que o PHP se tornou um produto que podia ser usado por outras pessoas.
PHP/FI 2.0 (Lançado em 1997)
A versão 2 do PHP/FI introduziu uma série de recursos que lançaram as bases para o que o PHP se tornaria no futuro. Esses recursos incluíam suporte para formulários e cookies, bem como a capacidade de incorporar código PHP diretamente em HTML.
PHP 3 (Lançado em 1998)
Desenvolvido por Andi Gutmans e Zeev Suraski, o PHP 3 apresentou uma reformulação completa da linguagem, estabelecendo a maioria das convenções de sintaxe que conhecemos hoje. Incluía suporte a objetos pela primeira vez e foi a primeira versão que realmente se assemelhava a uma linguagem de programação completa.
PHP 4 (Lançado no ano 2000)
A versão 4 do PHP introduziu o Zend Engine, um software que interpreta o código PHP. Isso resultou em melhor desempenho, bem como em um suporte aprimorado para programação orientada a objetos. Também incluiu recursos como persistência de sessão e buffer de saída.
PHP5
O PHP 5 introduziu melhorias significativas na programação orientada a objetos, com a adição de classes abstratas, interfaces, clonagem de objetos e exceções. Além disso, o suporte a XML foi aprimorado e o suporte a SQLite foi introduzido.
PHP 5.0 (Lançado em julho de 2004)
- Melhorias na programação orientada a objetos Introduziu um modelo de objeto completo, incluindo modificadores de acesso, interfaces, clonagem e exceções.
- Melhoria no processamento de XML Adicionada a extensão SimpleXML para facilitar o manuseio de XML.
- SQLite: O SQLite, um mecanismo de banco de dados SQL leve, foi incluído. Em PHP por padrão.
PHP 5.1 (Lançado em novembro de 2005)
- Suporte a PDO (Objetos de Dados PHP): Fornece uma interface para acessar bancos de dados em PHP.
- Melhorias de desempenho Inclui a adição de um coletor de lixo para encerrar ciclos de referência.
PHP 5.2 (Lançado em novembro de 2006)
- Introdução à função filter_list() : Ajuda a validar e filtrar dados de forma segura.
- Melhorias de desempenho e estabilidade Inclui a atualização da biblioteca PCRE, que apresenta compatibilidade e desempenho aprimorados.
PHP 5.3 (Lançado em junho de 2009)
- Espaços de nomes Elas permitem organizar melhor o código em pacotes.
- Ligações Estáticas Tardias Melhora a herança de código em PHP.
- Closures (funções anônimas) Agora é possível criar funções sem um nome específico.
- Melhorias no tratamento de exceções É introduzida a possibilidade de usar múltiplas exceções `catch`.
- Suporte para sintaxe ternária aninhada sem a necessidade de parênteses.
PHP 5.4 (Lançado em março de 2012)
- Características Permite a reutilização de código em linguagens de programação com um único ancestral, um tipo de herança múltipla.
- Sintaxe abreviada de matriz Agora é possível declarar arrays com colchetes [] em vez de usar a função array().
- Gestão de memória aprimorada : Reduz o uso geral de memória.
PHP 5.5 (Lançado em junho de 2013)
- Geradores Permite a criação fácil de iteradores sem a necessidade de implementar a interface de iterador.
- Finalmente, a palavra-chave : Ajuda a garantir que um segmento de código seja sempre executado, independentemente de uma exceção ser lançada.
- Suporte para listas em loops foreach.
PHP 5.6 (Lançado em agosto de 2014)
- Desconstrução de argumentos Permite usar ... para desempacotar argumentos de um array ou de um objeto Traversable.
- Use função e use constante Importar funções e constantes para um espaço de nomes.
- Melhorias nas Boas Práticas de Fabricação (BPF) Permite o uso de números GMP em funções que aceitam números inteiros ou strings.
- Melhorias de segurança : Foi adicionado suporte para certificados de assinatura de chave pública.
PHP 7 (Lançado em 2015)
Com o PHP 7, houve um grande salto de desempenho graças à introdução do mecanismo de execução Just In Time (JIT). Recursos adicionais incluem tipos de retorno, declaração de tipo escalar, operador de mesclagem nula e a capacidade de definir arrays constantes usando define().
PHP 7.0 (Lançado em dezembro de 2015)
- Melhoria de desempenho O novo mecanismo PHPNG (Zend Engine 3) melhora o desempenho, reduz o uso de memória e facilita o tratamento de erros.
- Declarações de tipo de retorno Essa funcionalidade permite especificar o tipo de valor que uma função deve retornar.
- Declarações de tipo escalar Permite forçar o tipo de parâmetros em funções (int, float, string, bool).
- Operador de Fusão Nula (??) Este operador simplifica a verificação de valores nulos.
- Operador de nave espacial (<=>) Introduzido para facilitar a comparação entre duas expressões.
PHP 7.1 (Lançado em dezembro de 2016)
- Tipos anuláveis É permitido indicar que o valor de retorno de uma função pode ser de um tipo específico ou nulo.
- Funções vazias O tipo void foi introduzido para funções que não retornam nada.
- Visibilidade constante da classe Agora você pode definir constantes de classe como públicas, privadas ou protegidas.
- Pseudo-tipo iterável Insira o tipo iterável para os parâmetros e os tipos de retorno das funções.
PHP 7.2 (Lançado em novembro de 2017)
- Libsodium Esta biblioteca para criptografia moderna e segura agora está incluída por padrão.
- Melhorias de tipo Adicionou-se o tipo "objeto" e permitiu-se o uso de tipos abstratos em tipos de parâmetros e declarações de tipo de retorno.
PHP 7.3 (Lançado em dezembro de 2018)
- Vírgulas à direita em chamadas de função Vírgulas à direita são permitidas em chamadas de função.
- Melhoria na velocidade do código JSON O desempenho das funções json_encode() e json_decode() foi aprimorado.
- Melhorias no GC : Introduz melhorias no coletor de lixo, resultando em menor uso de memória.
PHP 7.4 (Lançado em novembro de 2019)
- Funções de seta Essa funcionalidade permite a criação de funções anônimas de forma mais concisa.
- Propriedades tipadas Propriedades de classe agora podem ter tipos declarados.
- Desempacotando dentro de arrays Esta funcionalidade permite desempacotar arrays dentro de outros arrays.
- Referências fracas Permite a retenção de referências a objetos sem impedir que sejam destruídos pelo coletor de lixo.
PHP 8 (Lançado em 2020)
A versão 8 do PHP trouxe consigo uma série de novos recursos interessantes, como a compilação Just-In-Time (JIT), que melhora ainda mais o desempenho. Tipos de dados de união, expressões de correspondência, operador nullsafe, argumentos nomeados e atributos também foram adicionados, entre muitos outros recursos.
Bem, e onde está a versão 6?
A versão PHP 6 de fato existiu como um projeto, mas nunca foi lançado oficialmente O principal objetivo do PHP 6 era fornecer suporte nativo ao Unicode, um padrão que permite o processamento de texto em qualquer idioma do mundo.
No entanto, os desenvolvedores se depararam com uma série de problemas durante o desenvolvimento Implementar suporte completo a Unicode no núcleo do PHP provou ser um desafio muito maior do que o esperado. Além disso, o desempenho da versão de pré-visualização do PHP 6 com Unicode foi significativamente mais lento.
Devido a essas dificuldades e ao atraso no desenvolvimento, o projeto PHP 6 acabou sendo abandonado. Os desenvolvedores decidiram pular o número 6 ao nomear a próxima versão principal do PHP para evitar confusão com o projeto PHP 6, que havia fracassado. Portanto, após o PHP 5.6, a próxima versão principal foi o PHP 7.0.
O PHP 7 incorporou muitos dos recursos planejados para o PHP 6, mas não incluiu suporte nativo a Unicode no núcleo da linguagem. Em vez disso, o PHP 7 focou em melhorar o desempenho e adicionar novos recursos à linguagem.
Vamos falar sobre desempenho: vale a pena fazer o upgrade?
A evolução da linguagem de programação não trouxe apenas novas funcionalidades, mas também deu especial ênfase à melhoria do desempenho a cada versão:
- PHP/FI 2.0 - Baixo Não foi otimizado para desempenho, pois o foco principal estava nas funcionalidades de formulário e na interação com bancos de dados.
- PHP 3 - Melhorado em relação ao PHP/FI 2.0. A reescrita do mecanismo PHP permitiu uma melhoria no desempenho e na eficiência.
- PHP 4 - Melhorado em relação ao PHP 3. A introdução do mecanismo Zend proporcionou uma melhoria adicional no desempenho.
- PHP 5.0 - Semelhante ao PHP 4. Embora incluísse melhorias significativas na programação orientada a objetos e no suporte a XML, o desempenho era similar ao do PHP 4.
- PHP 5.1 - 5.6 - Melhorado a cada versão secundária, especialmente com otimizações de desempenho e melhorias na coleta de lixo.
- PHP 7.0 - Significativamente melhorado em relação ao PHP 5.X, graças à introdução do Zend Engine 3. O desempenho do PHP 7.0 pode ser o dobro ou o triplo do PHP 5.6 para muitas aplicações.
- PHP 7.1 - 7.4 Cada versão secundária introduziu melhorias de desempenho, embora não tão drásticas quanto a transição do PHP 5.6 para o PHP 7.0.
- PHP 8.0 - Melhorado em relação ao PHP 7.4. A adição da compilação Just-In-Time (JIT) pode melhorar o desempenho em certos casos, embora a melhoria possa não ser significativa para aplicações web típicas.
E quanto à segurança? O que você pode me dizer?
PHP/FI 2.0 - PHP 3
- Nessas primeiras versões, a segurança não era uma grande preocupação e muitos recursos de segurança não foram incluídos.
PHP4
- O PHP 4 introduziu o modo de segurança (safe_mode), que tinha como objetivo prevenir alguns tipos de ataques, mas acabou sendo considerado ineficaz e foi descontinuado e removido no PHP 5.4.
PHP5
O PHP 5 introduziu uma série de melhorias de segurança:
- Magic Quotes: Introduzido para prevenir ataques de injeção de SQL, mas foi criticado por seu comportamento inconsistente e acabou sendo desativado por padrão no PHP 5.3 e removido no PHP 5.4.
- Melhorias no tratamento de erros: O PHP 5 introduziu exceções, que melhoram o tratamento de erros e podem ajudar a evitar a exposição de informações confidenciais.
- PDO (PHP Data Objects): Introduzido no PHP 5.1, fornece uma interface para acessar bancos de dados que inclui consultas pré-configuradas, o que pode ajudar a prevenir injeção de SQL.
PHP 5.2
- Filtro de entrada: O PHP 5.2 introduziu a extensão de filtro que permite a validação e filtragem de dados de entrada de forma segura e consistente.
PHP 5.3
- PHAR (PHP Archive): O PHP 5.3 introduziu suporte para PHAR, uma forma de empacotar aplicações PHP inteiras em um único arquivo. Embora isso não seja uma melhoria de segurança em si, o PHAR inclui diversas medidas de segurança para prevenir ataques, como a capacidade de validar assinaturas digitais.
PHP 5.6
- Melhoria na segurança SSL/TLS: O PHP 5.6 introduziu suporte para certificados de assinatura de chave pública e melhorias nas configurações padrão de SSL/TLS.
PHP 7
O PHP 7 desativou ou removeu diversas funções e recursos obsoletos e potencialmente inseguros:
- Removemos diversas funções de hash inseguras, como crypt() e hash().
- Desativamos a desserialização automática para evitar vulnerabilidade de injeção de objetos.
- Introduzimos a declaração de tipo e a declaração de tipo de retorno para ajudar a prevenir erros de tipo que poderiam ser explorados.
PHP 7.2
- Aprimoramento da segurança de senhas: o PHP 7.2 introduziu a função password_hash() com suporte para Argon2, um algoritmo de hash de senhas mais seguro.
PHP 8
O PHP 8 não introduziu muitos novos recursos de segurança, mas continuou a tendência do PHP 7 de remover ou desativar recursos obsoletos e potencialmente inseguros.
Conclusão
A atualização para a versão mais recente do PHP geralmente oferece vários benefícios Primeiro, as atualizações geralmente incluem melhorias de desempenho , o que pode fazer com que seus aplicativos da web funcionem mais rapidamente. Em segundo lugar, as versões mais recentes geralmente incluem novos recursos Isso pode tornar o código mais eficiente e mais fácil de escrever e manter. Terceiro, as versões mais recentes do PHP geralmente incluem melhorias de segurança que podem Proteja seu aplicativo contra ataques e vulnerabilidades.
No entanto, também é importante observar que a atualização para uma nova versão do PHP pode trazer desafios O código existente pode precisar ser revisado ou refatorado para suportar novos recursos ou para evitar recursos que foram desativados ou removidos. Em ambos os casos, a atualização do PHP é uma parte essencial da execução de um sistema. aplicação web segura e de alto desempenho .



