Novidades no PhpStorm 2021.3

O PhpStorm 2021.3 é uma atualização principal que introduz suporte para o recém-lançado PHP 8.1, melhor tratamento de elementos genéricos em PHP, bem como melhorias de implantação, cliente HTTP e integração com VCS.

PHP 8.1

Uma nova versão do interpretador acaba de ser lançada! Confira o vídeo de Brent Roose e dos membros da comunidade para uma visão geral de todos os novos recursos da linguagem.

Enums

Um dos recursos mais esperados do PHP 8.1 são as enumerações.

O suporte para enumerações foi introduzido no PhpStorm 2021.2, oferecendo sugestões de código e validação para impedir que você as utilize incorretamente.

Uma enumeração no PHP contém um conjunto de casos, pode ter métodos e pode ser usada como uma dica de tipo. Em todos esses casos, o PhpStorm fornece realce de erros e sugestões adequadas para economizar seu tempo.

Propriedades somente leitura

Readonly properties are the properties that cannot be changed after initialization, that is, after a value is assigned to them.

O PhpStorm 2021.3 ajudará você a usar propriedades somente leitura no seu código e a garantir que elas sejam usadas corretamente.

Uma inspeção dedicada verificará se uma propriedade somente leitura foi inicializada apenas no mesmo escopo em que foi declarada, seja na própria declaração da propriedade ou em um método de classe.

Como propriedades somente leitura sempre devem ter seu tipo declarado, o PhpStorm verificará se a declaração de tipo está especificada.

Uma propriedade somente leitura não pode ter um valor default, mas você pode inicializá-la no construtor como uma propriedade promoted e para que o PhpStorm forneça uma correção rápida.

Operador `new` em inicializadores

No PHP 8.1, você pode usar novas expressões ao inicializar valores de parâmetros default, variáveis estáticas, constantes globais e argumentos de atributos.

O PhpStorm verificará tais usos e realçará casos inválidos, como fornecer um novo objeto como constante ou propriedade de classe.

Callables de primeira classe

O PHP 8.1 permite que você obtenha uma referência a qualquer função por meio da sintaxe de callables de primeira classe . Agora, em vez de escrever $fn = Closure::fromCallable('strlen');, você pode usar um formato $fn = strlen(...); mais curto, e o PhpStorm fornecerá uma correção rápida Alt+Enter para converter seu código na nova sintaxe.

Tipos de interseção puros

O PHP 8.1 traz tipos de interseção, cujo valor deve satisfazer múltiplas restrições de tipo ao invés de apenas uma.

O PhpStorm agora fornecerá complementação de código para essas construções e verificará se um tipo de interseção não está combinado com um tipo de união. Se você tiver um tipo de interseção especificado como uma anotação PHPDoc, o PhpStorm também irá interpretá-lo corretamente.

Novo tipo de retorno: `never`

O PHP 8.1 introduz um tipo never para valores de retorno. Se uma função for declarada com o tipo never, então ela não retornará um valor e lançará uma exceção ou encerrará a execução do script (como fazem as funções die(), exit() ou trigger_error()).

Constantes finais

No PHP 8.1, você pode declarar constantes de classe final para que elas não possam ser sobrescritas em classes filhas, e o PhpStorm verificará esses casos.

Deprecações

Além de novos recursos, o PHP 8.1 traz várias deprecações que têm como objetivo deixar a linguagem mais consistente e fácil de usar. O PhpStorm lhe ajudará a localizar esses códigos deprecados. Aqui estão alguns exemplos:

Uso deprecado de interfaces Serializable

Em vez de interfaces Serializable, é recomendado usar os métodos mágicos __serialize() e __unserialize(). No PHP 8.1, você ainda pode usar Serializable, mas apenas se a classe de implementação usar __serialize() e __unserialize(). O PhpStorm 2021.3 realça o código incorreto e oferece uma correção rápida via Alt+Enter para adicionar os métodos mágicos.

Uso restrito de GLOBALS

O uso da variável superglobal $GLOBALS no PHP 8.1 agora é restrito: não é permitido realizar operações de gravação ou leitura/gravação na $GLOBALS considerada como um todo. O PhpStorm realçará esses usos problemáticos.

Elementos genéricos para PHP

O PHP ainda não oferece suporte para elementos genéricos em nível de linguagem, mas seu uso por meio de anotações já se tornou bastante popular. Eles tornam o código mais seguro e previsível ao trabalhar com coleções, contêineres, factories e outras aplicações. O PhpStorm 2021.3 amplia o suporte para genéricos por meio da anotação @template.

Suporte aprimorado para Doctrine Collections

O PhpStorm traz suporte para a interface IteratorAggregate e a iteração sobre Doctrine Collections agora funciona de forma nativa.

Suporte a coleções Laravel

In the upcoming Laravel release, the illuminate/collections package will support generics annotations. O PhpStorm 2021.3 fornece melhor complementação de código para essas coleções.

Inferência de tipos genéricos do construtor

Se houver um parâmetro @template genérico em um construtor e você quiser especificar o tipo transmitindo um objeto como um argumento, o PhpStorm agora irá inferir o tipo correto e fornecerá complementação de código.

Refatorações

Mover classes usando arrastar e soltar

Antes, para mover uma classe e atualizar seu namespace, a única opção era usar a refatoração de movimentação (F6) no editor de código. No PhpStorm 2021.3, como alternativa você pode usar arrastar e soltar na view Project. Assim, a estrutura do projeto ficaria visível durante a operação. E mais, você pode mover várias classes ou pastas inteiras usando essa técnica, e o PhpStorm atualizará corretamente todas as referências.

Função ou método inline

A refatoração Inline method permite substituir as chamadas ao método pelo conteúdo do método e excluir o método propriamente dito. No PhpStorm 2021.3, a refatoração recebeu várias melhorias e cobrirá ainda mais casos. Por exemplo, agora há suporte para métodos não estáticos, cadeias de métodos e funções de seta/anônimas transmitidas como parâmetros.

Para usar essa refatoração, posicione o cursor em um método e pressione Ctrl+Alt+N. Se houver um método privado que é usado apenas uma vez no código, pressione Alt+Enter e use a nova correção rápida Inline Method.

Variável inline

A refatoração Inline variable permite substituir as referências a uma variável pelo valor real dessa variável. No PhpStorm 2021.3, essa refatoração oferece suporte à incorporação de variáveis NOWDOC/HEREDOC e inclui várias melhorias de usabilidade.

Além disso, o PhpStorm agora detectará variáveis com um único uso e fornecerá uma correção rápida Inline Variable, que você pode aplicar via Alt+Enter.

Implantação

Suporte para rsync

Ao usar um servidor SFTP para implantação, você pode habilitar o rsync para carregar e baixar arquivos e pastas, o que aumentará significativamente as velocidades de transferência. A opção correspondente Use rsync for download/upload está localizada na seção Advanced da configuração do servidor de implantação.

O caminho para o executável do rsync pode ser configurado em Settings/Preferences | Tools | Rsync. Para macOS e Linux, ele estará disponível imediatamente. For Windows, it is recommended to use Cygwin and OpenSSH.

Retransmitir arquivos quando ocorre falha no upload

O PhpStorm 2021.3 permite retransmitir os arquivos cujo upload falhou. Nesses casos, clique no link Retry na janela de ferramentas File Transfer.

Suporte de proxy para conexões SSH

Agora, você pode especificar um servidor proxy HTTP ou SOCKS para sua configuração SSH em Settings/Preferences | Tools | SSH Configurations.

Também é possível usar o proxy global no âmbito do IDE. Para isto, ative a caixa de seleção Use global IDE proxy settings e forneça os detalhes do proxy em Settings/Preferences | Appearance & Behavior | System Settings | HTTP Proxy.

Alternar rapidamente o servidor default do projeto

O PhpStorm 2021.3 fornece um novo widget de barra de status que mostra o servidor default atual. Quando você precisa lidar com vários ambientes, pode alternar entre eles diretamente, sem acessar as configurações.

Cliente HTTP

Respostas binárias no cliente HTTP

O Cliente HTTP agora suporta respostas binárias. Se uma resposta recebida for uma imagem, você verá sua visualização diretamente no console de respostas.

Redirecionamento da saída para arquivo personalizado ou diretório

O cliente HTTP agora pode redirecionar a saída para um arquivo ou diretório personalizado. Ele oferece suporte a dois operadores para redirecionamentos forçados e flexíveis:

  • O operador >> sempre cria um novo arquivo, adicionando um sufixo -n a um nome de arquivo, se esse arquivo já existir.
  • O operador >>! irá sobrepor o arquivo se ele já existir.

Além de fornecer caminhos de arquivo explícitos, agora você pode usar novas variáveis predefinidas: {{$projectRoot}} aponta para a pasta raiz do projeto e {{$historyFolder}} aponta para a pasta de histórico de solicitações.

Suporte para identificadores de solicitações HTTP

No PhpStorm 2021.3, suas solicitações HTTP podem ser nomeadas! Você pode fornecer um identificador como um comentário com @name, bem como texto no separador de solicitações (###).

Você pode depois fazer uma solicitação pelo nome, através da janela de ferramentas Services, nas caixas de diálogo Run Configuration, Run Anything ou Search Everywhere.

Experiência do usuário

Nova janela de ferramenta Bookmarks

No PhpStorm 2021.3, as funções Favorites e Bookmarks foram combinadas numa só: Bookmarks. Você pode adicionar um favorito em uma linha, arquivo ou pasta específica pressionando F11. Todos os favoritos adicionados estarão disponíveis na janela de ferramentas Bookmarks unificada.

Visualização do código-fonte para Show Usages

A caixa de diálogo Show Usages, que você pode chamar clicando com a tecla Ctrl sobre um símbolo, agora pode exibir a visualização do código-fonte por uso encontrado. Para habilitar a visualização, clique no botão da barra de ferramentas Icon of the toolbar button.

VCS

Alinhamento do realce de alterações

Adicionamos a nova opção Align Changes Highlighting nas configurações da tela Diff, que podem ser encontradas no ícone de engrenagem. Este recurso facilita a leitura Diff, especialmente quando há modificações complexas, porque alinha as linhas inalteradas para que elas sejam exibidas uma ao lado da outra. Isto ajuda você a ver com mais clareza o código que foi adicionado ou removido.

Checkout and Rebase onto Current para branches remotos

A ação Checkout and Rebase onto Current permite que você faça o check-out do branch selecionado e o rebase dele sobre um branch que já esteja em check-out. Antes, isto só era possível para branches locais, mas, no PhpStorm 2021.3, essa ação pode ser aplicada a branches remotos também.

Nova ação "Push All up to Here"

Se você tem vários commits prontos para serem enviados, enquanto outros ainda estão em andamento, talvez queira fazer push apenas daqueles que você tem confiança. O PhpStorm 2021.3 permitirá que você faça push dos commits até aquele que selecionou na aba Log da janela de ferramentas Git. Selecione o commit necessário, clique nele com o botão direito e use a nova ação Push All up to Here.

Configurações de VCS reorganizadas

A página Version Control em Settings/Preferences foi simplificada para melhor usabilidade e agora lista todas as configurações disponíveis. O nó Git agora está dividido em seções que representam os processos mais importantes: Commit, Push e Update. Um nó separado para Mapeamentos de diretórios foi adicionado. Como as operações em segundo plano agora estão ativadas por default, o nó Background foi removido.