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.
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.
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.
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.
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.
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.
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.
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()
).
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.
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:
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.
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.
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
.
O PhpStorm traz suporte para a interface IteratorAggregate
e a iteração sobre Doctrine Collections agora funciona de forma nativa.
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.
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.
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.
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.
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.
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.
O PhpStorm 2021.3 permite retransmitir os arquivos cujo upload falhou. Nesses casos, clique no link Retry na janela de ferramentas File Transfer.
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.
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.
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.
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:
>>
sempre cria um novo arquivo, adicionando um sufixo -n
a um nome de arquivo, se esse arquivo já existir. >>!
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.
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.
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.
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 .
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.
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.
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.
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.