portaldacalheta.pt
  • Principal
  • Planejamento E Previsão
  • Design De Iu
  • Design Móvel
  • Pessoas E Equipes De Produto
Processo Interno

Introdução ao PHP 7: O que há de novo e o que aconteceu



Um dos eventos mais emocionantes em 2015 no mundo do PHP foi o lançamento do PHP 7, 10 anos após o lançamento da última versão principal, o PHP 5. Com um grande passo à frente, o PHP 7 apresenta muitos novos recursos e atualizações de desempenho .

No entanto, também remove funcionalidades antigas e obsoletas, o que introduz algumas quebras de compatibilidade, tornando mais difícil a migração de aplicativos mais antigos para a nova versão. Este guia deve servir como um tour rápido sobre o que esperar se você planeja mover seus aplicativos existentes, ou construir novos, em cima do PHP 7.



Mas espere, para onde foi o PHP 6?

Se você não tem trabalhado com PHP recentemente, pode se perguntar o que aconteceu com o PHP 6, por que pular do PHP 5 para o PHP 7? Bem, para encurtar a história, o PHP 6 foi um fracasso. O principal recurso da versão 6 era o suporte nativo para caracteres Unicode, já que o PHP é usado principalmente no desenvolvimento da web e a web precisa do Unicode, então a mudança para trazer o Unicode para o PHP fez sentido.



A ideia era trazer suporte completo para Unicode para o próprio núcleo. Isso teria trazido recursos estendidos para a linguagem, desde a capacidade de usar emojis bobos como nomes de variáveis ​​e funções, até uma poderosa funcionalidade de string internacional. Por exemplo, quando outro idioma usa letras maiúsculas e minúsculas de maneira diferente do inglês, ou quando um nome em caracteres chineses precisa ser convertido para o inglês.



Infelizmente, esse plano ambicioso provou ser um problema maior do que o previsto. Grande parte da base de código teve que ser portada para suportar Unicode para extensões importantes e centrais, o que se revelou tedioso e complicado. Isso desacelerou o desenvolvimento de outros recursos da linguagem, frustrando muitos Desenvolvedores PHP no processo. Obstáculos adicionais apareceram, o que resultou em menos interesse em desenvolver um suporte nativo para Unicode, levando ao abandono do projeto.

Como recursos, como livros e artigos, foram escritos para o PHP 6 e seu suporte a Unicode, a nova versão seria renomeada para PHP 7 para evitar confusão.



De qualquer forma, o suficiente sobre o passado triste, vamos ver o que o PHP 7 traz para a festa.

Batalha de desempenho, PHP 7 vs. PHP 5

Com virtualmente todas as atualizações, pequenas atualizações de desempenho são esperadas. No entanto, desta vez, o PHP traz uma melhoria significativa em relação às versões anteriores, tornando o desempenho absoluto um dos recursos mais atraentes do PHP 7. Isso vem como parte do projeto “PHPNG”, que aborda os aspectos internos do próprio Zend Engine.



Ao refatorar as estruturas de dados internas e adicionar uma etapa intermediária à compilação do código na forma de uma árvore de sintaxe abstrata (AST), o resultado é um desempenho superior e uma alocação de memória mais eficiente. Os próprios números parecem muito promissores; benchmarks feitos em aplicativos do mundo real mostram que o PHP 7 é duas vezes mais rápido que o PHP 5.6 em média e resulta em 50 por cento menos consumo de memória durante as solicitações, tornando o PHP 7 um forte rival para o compilador HHVM JIT do Facebook. Dê uma olhada neste infográfico da Zend que descreve o desempenho de alguns CMS e frameworks .

Imagem: Ilustração de desempenho do PHP 7 vs. PHP 5.



A diminuição no consumo de memória também permite que máquinas menores lidem melhor com as solicitações, juntamente com a oportunidade de construir microsserviços em torno do PHP. As mudanças internas, em particular a implementação de AST, também abrem possibilidades para otimizações futuras que podem levar o desempenho ainda mais longe. Uma nova implementação interna de um compilador JIT está sendo considerada para versões futuras.

Açúcar sintático PHP 7

O PHP 7 vem com novos recursos de sintaxe. Embora não ampliem os recursos da linguagem em si, eles fornecem uma maneira melhor ou mais fácil de tornar seu código mais agradável de escrever e agradável aos olhos.



o que são componentes em angular

Declarações de importação de grupo

Agora, podemos agrupar declarações de importação para classes originadas do mesmo namespace em um único use linha. Isso deve ajudar a alinhar as declarações de maneira significativa ou simplesmente salvar alguns bytes em seus arquivos.

use FrameworkModuleFoo; use FrameworkModuleBar; use FrameworkModuleBaz;

Com o PHP 7, podemos usar:



use FrameworkModule{Foo, Bar, Baz};

Ou, se você preferir um estilo de várias linhas:

use FrameworkModule{ Foo, Bar, Baz };

Operador de coalescência nula

Isso resolve um problema comum na programação PHP, onde queremos atribuir um valor a uma variável de outra variável, se a última estiver realmente definida, ou fornecer um valor diferente para ela. É comumente usado quando trabalhamos com entradas fornecidas pelo usuário.

Pré-PHP 7:

if (isset($foo)) { $bar = $foo; } else { $bar = 'default'; // we would give $bar the value 'default' if $foo is NULL }

Após PHP 7:

$bar = $foo ?? 'default';

Isso também pode ser encadeado com uma série de variáveis:

$bar = $foo ?? $baz ?? 'default';

Operador de nave espacial

O operador da nave permite uma comparação tripla entre dois valores, indicando não só se são iguais, mas também qual é o maior, na desigualdade, retornando 1,0 ou -1.

Aqui, podemos realizar ações diferentes, dependendo de como os valores diferem:

switch ($bar $foo) { case 0: echo '$bar and $foo are equal'; case -1: echo '$foo is bigger'; case 1: echo '$bar is bigger'; }

Os valores comparados podem ser inteiros, flutuantes, strings ou mesmo arrays. Verifique a documentação para ter uma ideia de como os diferentes valores são comparados entre si. [https://wiki.php.net/rfc/combined-comparison-operator]

Novos recursos no PHP 7

Mas é claro que o PHP 7 também traz funcionalidades novas e interessantes com ele.

Tipos de parâmetros escalares e dicas de tipo de retorno

O PHP 7 estende as declarações de tipo de parâmetros anteriores em métodos (classes, interfaces e arrays) adicionando os quatro tipos escalares; Inteiros (int), flutuantes (float), booleanos (bool) e strings (string) como possíveis tipos de parâmetro.

Além disso, podemos especificar opcionalmente quais métodos de tipo e funções retornam. Os tipos suportados são bool , int , flutuador , corda , matriz , exigível , nome de Classe ou Interface , auto e pai (para métodos de classe)

class Calculator { // We declare that the parameters provided are of type integer public function addTwoInts(int $x, int $y): int { return $x + $y; // We also explicitly say that this method will return an integer } }

As declarações de tipo permitem a construção de aplicativos mais robustos e evitam passar e retornar valores errados das funções. Outros benefícios incluem analisadores de código estático e IDEs, que fornecem uma visão melhor sobre a base de código se houver DocBlocks ausentes.

Como o PHP é uma linguagem fracamente digitada, certos valores para parâmetros e tipos de retorno serão lançados com base no contexto. Se passarmos o valor “3” em uma função que tem um parâmetro declarado do tipo int, o interpretador o aceitará como um inteiro e não lançará nenhum erro. Se não quiser isso, você pode ativar strict mode adicionando um declare diretiva.

declare(strict_types=1);

Isso é definido em uma base por arquivo, como uma opção global dividiria os repositórios de código para aqueles que são construídos com rigor global em e aqueles que não são, resultando em um comportamento inesperado quando combinamos o código de ambos.

Exceções de motor

Com a adição de exceções de mecanismo, erros fatais que teriam resultado no encerramento do script podem ser detectados e manipulados facilmente.

Erros como chamar um método inexistente não encerram o script, em vez disso, eles lançam uma exceção que pode ser tratada por um bloco try catch, o que melhora o tratamento de erros para seus aplicativos. Isso é importante para certos tipos de aplicativos, servidores e daemons porque, de outra forma, erros fatais exigiriam que eles reiniciassem. Os testes no PHPUnit também devem se tornar mais utilizáveis ​​à medida que erros fatais derrubam todo o conjunto de testes. Exceções, em vez de erros, seriam tratadas por caso de teste.

O PHP 7 adiciona uma série de novas classes de exceção com base no tipo de erros que podem ser encontrados. Para manter a compatibilidade entre as versões, um novo Throwable interface foi adicionada e pode ser implementada a partir de exceções do mecanismo e do usuário. Isso foi necessário para evitar exceções de mecanismo para estender a classe de exceção base, resultando em exceções de captura de código mais antigas que não existiam antes.

Antes do PHP 7, isso encerraria o script com um erro fatal:

try { thisFunctionDoesNotEvenExist(); } catch (EngineException $e) { // Clean things up and log error echo $e->getMessage(); }

Aulas Anônimas

Classes anônimas são primas de funções anônimas que você pode usar em uma instância simples de curto prazo. As classes anônimas são facilmente criadas e usadas como um objeto normal. Aqui está um exemplo dos documentos.

Pré-PHP 7

class MyLogger { public function log($msg) { print_r($msg . ' '); } } $pusher->setLogger( new MyLogger() );

Com classe anônima:

$pusher->setLogger(new class { public function log($msg) { print_r($msg . ' '); } });

Classes anônimas são úteis em testes de unidade, particularmente em objetos e serviços de teste de simulação. Isso nos ajuda a evitar bibliotecas e estruturas de simulação pesada, criando um objeto simples que fornece a interface que desejamos simular.

Funções CSPRNG

Duas novas funções para gerar strings e inteiros criptograficamente seguros foram adicionadas.

random_bytes(int $len);

Retorna uma string aleatória com comprimento $len.

random_int(int $min, int $max);

Retorna um número entre $min e $max.

Sintaxe de escape de ponto de código Unicode

Ao contrário de muitas outras linguagens, antes do PHP 7, o PHP não tinha como escapar de um ponto de código Unicode em strings literais. Essa funcionalidade adiciona o escape u seqüência para produzir tais caracteres usando seu codepoint UTF-8. Isso é melhor do que inserir os caracteres diretamente, permitindo um melhor manuseio de caracteres invisíveis, bem como de caracteres que têm a mesma representação gráfica, mas diferem no significado.

echo 'u{1F602}'; // outputs ‚

Observe que isso quebra o código existente com u seqüência porque muda o comportamento.

Geradores são atualizados

Os geradores em PHP também têm alguns recursos adicionais interessantes. Agora, os geradores têm uma instrução de retorno que pode ser usada para permitir a saída de um valor final após a iteração. Isso pode ser usado para verificar se o gerador foi executado sem erros e permite que o código que chamou o gerador manipule vários cenários de maneira apropriada.

Além disso, os geradores podem retornar e produzir expressões de outros geradores. Isso permite que eles dividam operações complexas em unidades mais simples e modulares.

function genA() { yield 2; yield 3; yield 4; } function genB() { yield 1; yield from genA(); // 'genA' gets called here and iterated over yield 5; return 'success'; // This is a final result we can check later } foreach (genB() as $val) { echo ' $val'; // This will output values 1 to 5 in order } $genB()->getReturn(); // This should return 'success' when there are no errors.

Expectativas

As expectativas são uma melhoria para assert() função, mantendo a compatibilidade com versões anteriores. Eles permitem asserções de custo zero no código de produção e fornecem a capacidade de lançar exceções personalizadas quando a asserção falha, o que pode ser útil durante o desenvolvimento.

tutorial do servidor web raspberry pi

assert() torna-se uma construção de linguagem no PHP 7. Asserções devem ser usadas para propósitos de depuração apenas em ambientes de desenvolvimento e teste. Para configurar seu comportamento, foram fornecidas duas novas diretivas.

  • zend.assertions
    • 1: gerar e executar código (modo de desenvolvimento) (valor padrão)
    • 0: gera o código, mas pula em torno dele em tempo de execução
    • -1: não gera código, tornando-o custo zero (modo de produção)
  • assert.exception
    • 1: lançar quando a asserção falhar, lançando o objeto fornecido como exceção ou lançando um novo AssertionError objeto se a exceção não foi fornecida
    • 0: use ou gere um Lançável conforme descrito acima, mas apenas gere um aviso com base nesse objeto em vez de lançá-lo (compatível com o comportamento do PHP 5)

Preparando-se para mudar do PHP 5 para o PHP 7

A introdução de uma versão principal traz a oportunidade de alterar / atualizar funcionalidades mais antigas ou até mesmo removê-las se forem consideradas muito antigas ou estiverem obsoletas por algum tempo. Essas mudanças podem introduzir interrupções na compatibilidade em aplicativos mais antigos.

Outro problema que surge de tais saltos de versão é que bibliotecas e estruturas importantes das quais você depende podem ainda não ter sido atualizadas para suportar a versão mais recente. A equipe do PHP tentou fazer as novas alterações o mais compatíveis com as versões anteriores e permitir que a migração para a nova versão fosse o mais simples possível. Aplicativos mais novos e atualizados devem achar mais fácil mudar para a nova versão, enquanto aplicativos mais antigos podem ter que decidir se os benefícios superam o custo, possivelmente optando por não atualizar.

A maioria das interrupções são pequenas e podem ser atenuadas facilmente, enquanto outras podem exigir mais esforço e tempo. Basicamente, se você teve avisos de depreciação em seu aplicativo antes de instalar o PHP 7, provavelmente obterá erros que interromperão o aplicativo até serem corrigidos. Você foi avisado, certo?

SAPIs e extensões antigas

Mais importante ainda, SAPIs antigos e obsoletos foram removidos como o mysql extensão (mas você não deveria estar usando isso em primeiro lugar, certo?). Para uma lista completa de extensões e recursos removidos, você pode verificar este RFCs Aqui e Aqui .

Além disso, outros SAPIs estão sendo portados para o PHP 7.

Muitos SAPIs e extensões antigos foram retirados do PHP 7. Acreditamos que eles não passarão despercebidos.

Sintaxe de variável uniforme

Esta atualização fez algumas mudanças em favor da consistência para construções de variável-variável. Isso permite expressões mais avançadas com variáveis, mas introduz mudanças no comportamento em alguns outros casos, conforme mostrado abaixo.

// old meaning // new meaning $$foo['bar']['baz'] ${$foo['bar']['baz']} ($$foo)['bar']['baz'] $foo->$bar['baz'] $foo->{$bar['baz']} ($foo->$bar)['baz'] $foo->$bar['baz']() $foo->{$bar['baz']}() ($foo->$bar)['baz']() Foo::$bar['baz']() Foo::{$bar['baz']}() (Foo::$bar)['baz']()

Isso interromperia o comportamento dos aplicativos que acessam valores como este. Por outro lado, você pode fazer coisas legais como esta :.

// Nested () foo()(); // Calls the return of foo() $foo->bar()(); // IIFE syntax like JavaScript (function() { // Function body })(); // Nested :: $foo::$bar::$baz

Tags de estilo antigo removidas

As tags de abertura / fechamento ,, ... são removidos e não são mais válidos. Substituí-los por outros válidos deve ser fácil, mas o que você está fazendo com eles, esquisito?

Nomes inválidos para classes, interfaces e características

Resultante de adições como parâmetros e classes de tipos de retorno, interfaces e características não podem mais ter os seguintes nomes:

  • bool
  • int
  • flutuador
  • corda
  • nulo
  • verdade
  • falso

Isso causa interrupções nos aplicativos e bibliotecas existentes que os utilizam, mas devem ser fáceis de corrigir. Além disso, embora eles não causem nenhum erro e sejam válidos, os seguintes não devem ser usados, pois estão reservados para uso futuro:

  • recurso
  • objeto
  • misturado
  • numérico

Abster-se de usá-los deve poupar você do trabalho de alterá-los no futuro.

Para uma lista completa de mudanças que poderiam quebrar a compatibilidade, verifique este documento .

Você também pode usar php7cc , que verifica seu código e pode detectar qualquer problema potencial que possa surgir se você mudar para o PHP 7. Mas é claro, não há maneira melhor do que instalar o PHP 7 e ver por si mesmo.

Possíveis problemas de compatibilidade do PHP 7

Compatibilidade de infraestrutura PHP 7

Muitos serviços de hosting começaram a adicionar suporte para PHP 7. Esta é uma boa notícia para os provedores de hospedagem compartilhada, pois os ganhos de performance permitirão aumentar o número de sites clientes em seu hardware, reduzindo suas despesas operacionais e aumentando suas margens. Quanto aos próprios clientes, eles não devem esperar um grande impulso nessas condições, mas para ser justo, a hospedagem compartilhada não é uma escolha orientada para o desempenho de qualquer maneira.

Por outro lado, os serviços que oferecem servidores virtuais privados ou servidores dedicados colherão todos os benefícios desse aumento de desempenho. Alguns serviços PaaS, como Heroku, eram compatíveis com PHP 7 no início, mas outros serviços, como AWS Beanstalk e Oracle's OpenShift, estão ficando para trás. Verifique o site do seu provedor de PaaS para ver se o PHP 7 já é compatível ou se o suporte chegará em um futuro próximo.

Obviamente, os provedores de IaaS permitem que você assuma o controle do hardware e instale o PHP 7 (ou compile se for mais do seu agrado). Os pacotes do PHP 7 já estão disponíveis para os principais ambientes IaaS.

Compatibilidade de software PHP 7

Além da compatibilidade da infraestrutura, você também precisa estar ciente dos possíveis problemas de compatibilidade de software. Sistemas populares de gerenciamento de conteúdo como WordPress, Joomla e Drupal adicionaram suporte para PHP 7 em seus lançamentos mais recentes. Frameworks importantes como Symfony e Laravel também contam com suporte total.

No entanto, é hora de uma palavra de cautela. Esse suporte não se estende a códigos de terceiros na forma de complementos, plug-ins, pacotes ou o que quer que seu CMS ou estrutura os chame. Eles podem sofrer de problemas de compatibilidade e é sua responsabilidade garantir que tudo esteja pronto para o PHP 7.

Para repositórios ativos e mantidos, isso não deve ser um problema. No entanto, repositórios mais antigos e sem manutenção sem suporte ao PHP 7 podem tornar todo o seu aplicativo inutilizável.

O futuro do PHP

O lançamento do PHP 7 removeu o código antigo e obsoleto e abriu o caminho para novos recursos e atualizações de desempenho no futuro. Além disso, espera-se que o PHP obtenha otimizações de desempenho adicionais em breve. Apesar de haver algumas quebras de compatibilidade com versões anteriores, a maioria dos problemas é fácil de resolver.

dentro da função anônima, use jquery para selecionar a div do rodapé. ele tem um id de 'rodapé'.

Bibliotecas e frameworks estão migrando seus códigos para PHP 7, disponibilizando as últimas versões. Eu encorajo você a experimentar e ver os resultados por si mesmo. Talvez seu aplicativo já seja compatível e esteja esperando para usar e se beneficiar do PHP 7.

Relacionado: A lista dos 10 erros mais comuns que os desenvolvedores de PHP cometem

Principais erros de apresentação de argumentos de venda

Investidores E Financiamento

Principais erros de apresentação de argumentos de venda
O talento ágil é a resposta para o projeto de sistemas incorporados?

O talento ágil é a resposta para o projeto de sistemas incorporados?

Talento Ágil

Publicações Populares
‘Stormy Daniels lembrou Donald Trump da filha Ivanka’: cinco tópicos da entrevista da CBS '60 Minutes ’
‘Stormy Daniels lembrou Donald Trump da filha Ivanka’: cinco tópicos da entrevista da CBS '60 Minutes ’
Design de botão ao longo dos anos - A linha do tempo do Dribbble
Design de botão ao longo dos anos - A linha do tempo do Dribbble
Fazendo a mudança stick: como obter o gerenciamento de mudança certo
Fazendo a mudança stick: como obter o gerenciamento de mudança certo
Blues da indústria de kits de refeição: Como o avental azul pode aliviar seu mal-estar?
Blues da indústria de kits de refeição: Como o avental azul pode aliviar seu mal-estar?
Um guia para motores Rails na natureza: exemplos do mundo real de motores Rails em ação
Um guia para motores Rails na natureza: exemplos do mundo real de motores Rails em ação
 
Primeiras impressões - um guia para integração de experiência do usuário
Primeiras impressões - um guia para integração de experiência do usuário
Terremoto de magnitude 6,7 atinge o Chile, sem ameaça de tsunami
Terremoto de magnitude 6,7 atinge o Chile, sem ameaça de tsunami
EdTech Industry Analysis & Trends (2020)
EdTech Industry Analysis & Trends (2020)
Táticas e estratégias de negociação de fusões e aquisições: dicas de um profissional
Táticas e estratégias de negociação de fusões e aquisições: dicas de um profissional
Cinco etapas para o sucesso: uma lista de verificação de arrecadação de fundos de capital privado
Cinco etapas para o sucesso: uma lista de verificação de arrecadação de fundos de capital privado
Publicações Populares
  • c ++ é fácil de aprender
  • tutorial de camelo apache passo a passo
  • estimativa de custos em engenharia de software
  • causa raiz da crise da dívida da Grécia
  • crise da dívida grega explicada em termos simples
  • modelo de previsão de fluxo de caixa semanal
  • tutorial de lote de primavera para iniciantes
Categorias
  • Planejamento E Previsão
  • Design De Iu
  • Design Móvel
  • Pessoas E Equipes De Produto
  • © 2022 | Todos Os Direitos Reservados

    portaldacalheta.pt