O que há de novo no PhpStorm 2020.2

Suporte a Tipos de União PHP 8, novo mecanismo de fluxo de controle para PHP, refatoração Extract Class, suporte completo para solicitações pull do GitHub, novo Widget de Inspeções e suporte para OpenAPI.

Tipos de União PHP 8

Começamos a implementar o suporte ao PHP 8 com o suporte para Tipos de União. No PHP 8.0, será possível declarar mais de um tipo para propriedades, argumentos e tipos de retorno. O PhpStorm já oferece suporte total para esse recurso e pode ajudá-lo a migrar efetivamente.

Converter PHPDoc em tipos de união nativos

Converter PHPDoc em tipos de união nativos

Tipos de união costumavam ser fornecidos via PHPDoc, e agora o PhpStorm realça essas ocorrências.

Com a correção rápida Alt+Enter, eles agora podem ser convertidos em tipos de união nativos.

Isso funciona em qualquer lugar em que os tipos de união sejam aplicáveis, incluindo argumentos de função, tipos de retorno e propriedades. Para propriedades, ele também leva em consideração os valores padrão.

Alterar o nível da linguagem para PHP 8

Alterar o nível da linguagem para PHP 8

Para habilitar os recursos relacionados ao PHP 8, alterne o nível da linguagem para PHP 8 de uma das seguintes maneiras:

  • Use a correção rápida Alt+Enter diretamente no editor de código.
  • Acesse Preferences | Languages & Frameworks | PHP e use a lista PHP language level.
  • Especifique o requisito de versão do PHP em composer.json, e o PhpStorm o buscará automaticamente.
Executar validação de tipos

Executar validação de tipos

O PhpStorm analisa chamadas, calcula tipos possíveis e realça áreas problemáticas relacionadas a tipos de união.

As verificações funcionam em todos os níveis: propriedades, argumentos e valores de retorno.

Em bases de código complexas, ele ajuda a ver os problemas à primeira vista. O PhpStorm realçará lugares que exigem atenção antes mesmo de o código ser executado.

Detectar tipos duplicados e redundantes

Detectar tipos duplicados e redundantes

Existem muitas combinações de tipos que são proibidas ou redundantes. Por exemplo:

  • bool|false
  • Foo|Foo
  • object|User
  • iterable|array ou iterable|Traversable

Todos eles são realçados pelo PhpStorm como inválidos.

Trabalhar com tipos anuláveis

Trabalhar com tipos anuláveis

Quando existe um único tipo anulável, é permitido usar a notação ?Type ou Type|null no PHP 8.

Porém, quando há vários tipos combinados com nulo, é proibido usar ?Type1|Type2 como ambíguo.

O PhpStorm realça essas violações e fornece uma correção rápida Alt+Enter para convertê-las.

Seguir regras de variação

Seguir regras de variação

Durante a herança, o PHP permitirá modificar tipos se você seguir essas regras básicas:

  • Tipos de parâmetros são contravariantes, ou seja, podem ser estendidos.
  • Tipos de retorno são covariantes, ou seja, só podem ser reduzidos.
  • Tipos de propriedade precisam ser avaliados para o mesmo tipo.

Felizmente, com o PhpStorm, não há necessidade de lembrar essas regras, pois ele verificará o código e realçará as violações.

Usar pseudótipo falso

Usar pseudótipo falso

No PHP 8, haverá um pseudótipo false especial que pode ser usado apenas em declarações de tipo de união.

Ele é amplamente utilizado na biblioteca padrão, consulte strpos() ou array_search(), por exemplo, e pode ser aplicado em outro lugar para indicar um resultado negativo.

O PhpStorm realça usos incorretos e leva a inferência de tipo em consideração.

Remover PHPDoc redundante

Remover PHPDoc redundante

Após adicionar uma declaração de tipo de união nativa, um PHPDoc pode se tornar desnecessário, pois não fornece informações extras.

Agora, você pode removê-lo com uma correção rápida Alt+Enter.

Novo mecanismo de controle de fluxo

Condição sempre verdadeira

Condição sempre verdadeira

O PhpStorm agora pode analisar caminhos de código complexos e detectar se a condição em um bloco if-else faz sentido ou é redundante.

O resultado de 'instanceof' é sempre true

O resultado de 'instanceof' é sempre true

Semelhante a condições, o PhpStorm é capaz de detectar quando as verificações instanceof são apropriadas ou se elas sempre são avaliadas como verdadeiras devido ao tipo inferido na hierarquia de tipos.

Nova ação: Type Info

Nova ação: Type Info

Essa nova ação permite que você veja o tipo inferido de qualquer expressão selecionada.

Ao codificar, você pode selecionar uma expressão e verificar seu tipo usando o atalho Ctrl+Shift+P ou o menu View | Type Info.

A expressão é sempre ‘null’

A expressão é sempre ‘null’

O PhpStorm pode detectar quando é garantido que a variável seja apenas null. Nesse caso, o IDE sugere simplificar a expressão para torná-la mais clara.

Melhorias em ferramentas de qualidade

Melhorias em ferramentas de qualidade
  • Agora, é possível executar ferramentas de qualidade através do Docker Compose.
    Para fazer isso, vá para Preferences/Settings | Languages & Frameworks | PHP e adicione um novo interpretador remoto baseado no Docker Compose.
  • A Ação de reformatação para PHP-CS-Fixer e PHPCBF agora pode ser executada através de um interpretador remoto também.
  • Se o ruleset.xml do PHP_CodeSniffer’s tiver uma seção "exclude-pattern", o PhpStorm agora levará isso em consideração e não analisará os arquivos no caminho especificado.

Melhorias no Composer

O gerenciamento de dependências do Composer pode ser feito no editor diretamente dentro do arquivo composer.json.

Suporte para pacotes Satis/Packagist personalizados

Suporte para pacotes Satis/Packagist personalizados

Se houver fontes personalizadas especificadas na seção “repositories”, você obterá a complementação dos pacotes personalizados.

Agora, existe um ícone de medianiz que mostra o estado atual do armazenamento em cache de repositórios personalizados.

Complementação para várias versões

Complementação para várias versões

Quando um pacote possui várias versões separadas por vírgula ou barras verticais (||), o PhpStorm fornece a complementação de todas as versões disponíveis para esse pacote.

Antes, era comum perder a complementação depois de digitar ~, ^ ou >=. Porém, isso agora funciona como esperado com qualquer uma dessas restrições de intervalo em composer.json.

Acesso rápido às configurações de ferramentas adicionadas como dependências

Acesso rápido às configurações de ferramentas adicionadas como dependências

O PhpStorm fornece muitas integrações com ferramentas de terceiros. Agora, se uma ferramenta com suporte for declarada em composer.json, haverá um ícone de chave inglesa na medianiz ao lado dela. Você pode clicar nele para ir diretamente a seção correspondente de preferências.

Refatoração de extração de classe

Refatoração de extração de classe

Se uma classe fica sobrecarregada e obstruída com muitas responsabilidades adicionais, agora é possível refatorá-la movendo métodos e propriedades para uma nova classe com a refatoração Extract Class.

Selecione uma função, método ou propriedade que deseja mover e pressione Ctrl+T e selecione Extract class.

A refatoração criará um novo arquivo, instanciará um objeto da classe no construtor e ajustará os usos automaticamente.

Melhorias nas ferramentas de linha de comando

Melhorias nas ferramentas de linha de comando

Suporte para interpretadores remotos agora está disponível para ferramentas de linha de comando do PHP.

Em Preferences/Settings | Tools | Command Line Tool Support,, adicione uma nova entrada de ferramenta e escolha um dos interpretadorws remotos configurados.

O Laravel Artisan agora será detectado automaticamente! Isso significa que, quando você abre um projeto Laravel, pode pressionar Ctrl-Ctrl e começar a digitar um comando. O PhpStorm fornecerá a complementação e sugerirá os comandos disponíveis.

Novas inspeções

Array usada apenas com acesso de gravação

Array usada apenas com acesso de gravação

Se houver um array declarado e atualizado em algum lugar do código, mas ele nunca for lido, significa que é muito provável que o array seja redundante e adicione ruído ao código.

A inspeção detecta esses casos e solicita que você remova o array para tornar o código mais limpo.

Uma propriedade tipada pode não ter sido atribuída

Uma propriedade tipada pode não ter sido atribuída

Se uma propriedade tipada não tiver um valor padrão, ela será considerada não inicializada. A leitura de propriedades não inicializadas gerará um TypeError (a menos que o __get() mágico esteja definido).

O PhpStorm detecta propriedades não inicializadas e relça o código que tenta lê-las.

Suporte completo para solicitações pull do GitHub

Todo o workflow de solicitações pull agora pode ser realizado no PhpStorm, e não é mais necessário mudar para um navegador. Você pode gerenciar solicitações pull, ver a linha do tempo e os comentários inline, adicionar comentários e revisões e aceitar alterações.

Suporte completo para solicitações pull do GitHub

Para começar a trabalhar com solicitações de extração do GitHub, abra a janela da ferramenta Pull Requests na barra de ferramentas ou no menu principal VCS | Git | View Pull Requests.

Em seguida, selecione uma solicitação pull na lista para visualizar todos os seus detalhes: a mensagem, nomes de branches, autor e assim por diante.

A partir daqui, você pode iniciar o processo de revisão verificando os arquivos alterados e comentando as alterações - em nível de submissão e de linha.

Também é possível mesclar solicitações pull sem sair do IDE. Não há necessidade de criar um branch local a partir de uma solicitação pull, tudo funciona imediatamente.

Suporte OpenAPI

O PhpStorm 2020.2 oferece suporte ao plug-in OpenAPI Specifications. Este é um plug-in gratuito desenvolvido pela JetBrains que fornece complementação, navegação e validação nos arquivos de especificação do OpenAPI (openapi.yaml/openapi.json e swagger.yaml/swagger.json).

Suporte OpenAPI

O plug-in também fornece:

  • Integração com Swagger UI.
  • Geração de código.
  • Diff de estrutura integrado entre as especificações OpenAPI.
  • Ícones de medianiz para criar solicitações de Cliente HTTP a partir da especificação.
  • Complementação automática para terminais no cliente HTTP.

Novo Widget de Inspeções e exibição Problems

Novo Widget de Inspeções e exibição Problems

No canto superior direito do editor, você verá o novo Widget de Inspeções com um resumo dos problemas no arquivo atual.

  • Clique nas setas para alternar entre os problemas (ou use os atalhos F2 / Shift+F2).
  • Clique no widget para ver uma lista de todos os problemas no arquivo na janela de ferramentas Problems.
  • Passe o mouse sobre o widget para ver o pop-up de configurações e escolha quais problemas devem ser realçados.

Tecnologias Web

Todos os novos recursos e melhorias do WebStorm 2020.2 estão disponíveis no PhpStorm 2020.2, para uso imediato ou com plug-ins gratuitos disponíveis no Plugin Marketplace.

Prettier como formatador padrão em projetos JavaScript

Deseja usar o Prettier em vez do formatador incorporado para organizar seu código? Com essa atualização, isso ficou ainda mais fácil do que antes. Basta marcar a nova caixa de seleção On code reformat, e o IDE usará o Prettier sempre que você reformatar seus arquivos .js, .ts, .jsx e .tsx. Outros tipos de arquivos também podem ser facilmente adicionados.

O melhor suporte para Vue.js da categoria

Suporte para Nuxt.js, configurações de estilo de código específicas do Vue, melhorias no Vue em projetos TypeScript e muitas outras coisas que adicionamos no ano passado. O suporte ao Vue no PhpStorm nunca foi tão avançado!

Economize tempo com novos recursos para JavaScript

As novas intenções inteligentes Alt+Enter ajudarão você a executar algumas ações mais rapidamente. Por exemplo, agora, você pode converter rapidamente um loop for com um índice numérico em um método de array forEach. Examinar os comentários da documentação nos arquivos JavaScript e TypeScript também ficou mais fácil, pois agora você pode renderizá-los diretamente no editor, minimizando as distrações.

Controle de versão

Suporte para Git instalado no WSL 2

Suporte para Git instalado no WSL 2

O PhpStorm 2020.2 oferece suporte ao Git instalado no WSL 2 para trabalhar com projetos localizados nos sistemas de arquivos Linux e Windows.

O IDE pode alternar entre os executáveis do Git, dependendo da localização do projeto. Quando um projeto for aberto a partir do WSL (via \\wsl$ path), o IDE mudará automaticamente para o Git a partir do WSL e também fornecerá a capacidade de usar todos os recursos relacionados ao Git no IDE.

Nova interface do usuário para comparar branches

Quando você deseja comparar dois branches para ver quais submissões não pertencem uma à outra, o PhpStorm 2020.2 mostrará os logs no editor em vez de na janela de ferramentas Git. Isso garantirá que haja espaço suficiente para exibir todas as informações.

Escolha a ação "Compare with Current" no menu pop-up Git Branches VCS | Branches.

Ação "Drop Commit"

Ação "Drop Commit"

Agora, você pode remover facilmente submissões locais redundantes selecionando-as na guia Log da janela de ferramentas Git e escolhendo Drop Commit no menu de contexto.

Submissões locais de squash

Submissões locais de squash

Também é possível combinar várias submissões locais em uma única submissão, por exemplo, para limpar o histórico antes de fazer um push.

Na janela de ferramentas Git, selecione submissões e escolha Squash Commits… no menu de contexto.

O IDE executará uma recuperação interativa nos bastidores.

Ferramentas de banco de dados

Confira as Novidades no DataGrip 2020.2 – todos esses recursos estão disponíveis no PhpStorm também.

Editor separado para valores de células

Editor separado para valores de células

Agora, se você tiver um valor enorme na sua célula, ele poderá ser visualizado ou editado em um painel separado. Também é possível alternar o modo de quebra automática de linha usando a barra de ferramentas à direita. Use todo o poder do nosso editor de código para os seus dados.

Dialeto do Google BigQuery

Dialeto do Google BigQuery

Adicionamos um novo dialeto SQL: Google BigQuery. O suporte total para o BigQuery ainda não está aqui, mas tudo deve começar em algum lugar. O PhpStorm poderá realçar e fornecer assistência de codificação corretamente para suas consultas se você usar o Google BigQuery.

Visualização DML

Visualização DML

Você pode revisar a consulta que representa suas alterações no editor de dados. Existe um botão DML que ficará ativo se houver alterações pendentes. Essa consulta não é o SQL exato que será executado para modificar seus dados, pois o PhpStorm usa um driver JDBC para atualizar tabelas, mas, na maioria das vezes, será o mesmo.

Outras melhorias

  • Personalizando getters e setters
  • Resolve para vários projetos em uma só janela
  • Nova ação: Add Carets to Ends of Selected Lines