Novidades no PhpStorm 2023.1

O PhpStorm 2023.1 é uma atualização principal que inclui integração com 3v4l.org, melhor desempenho, nova IU aprimorada, depurador DFA para PHP, suporte para projetos multi-composer.json e muito mais.

Nova IU Beta

Introduzimos uma nova IU no lançamento anterior que ficava desabilitada por padrão. Neste lançamento, continuamos aprimorando a nova IU com base no feedback dos usuários e em nossas pesquisas. Veja algumas das melhorias mencionadas abaixo.

Para habilitar a nova IU, acesse Preferences / Settings | Appearance & Behavior | New UI.

Modo Compacto

O Modo Compacto melhora a experiência do usuário da nova IU em telas menores. Ele torna as barras de ferramentas e os cabeçalhos das janelas de ferramentas mais enxutos, reduz espaçamentos e preenchimentos e torna os ícones e botões menores para ajudar você a se concentrar no código e não nos controles.

Para ativar o Compact Mode, vá até o menu View e selecione <0>Appearance | Compact Mode.

Painel de nome de arquivo visível quando as abas estão ocultas na nova IU

O nome do arquivo que está aberto no momento agora é exibido em um painel quando as abas do editor estão ocultas.

Divisão vertical nas janelas de ferramentas

Essa configuração na nova IU permite dividir a área da janela de ferramentas em 2 janelas e organizá-las para que você possa vê-las ao mesmo tempo. Isso é algo que você podia fazer na IU antiga, mas estava faltando na nova versão.

Para adicionar uma janela de ferramentas a essa área e posicioná-la na parte inferior, arraste seu ícone ao longo da barra lateral e solte-o sob o separador. Como alternativa, você pode clicar com o botão direito do mouse no ícone e atribuir o novo posicionamento da janela de ferramentas usando a ação Move to.

Abas de projeto na nova IU do macOS

Ao abrir vários projetos na mesma janela, os usuários do macOS agora podem alternar facilmente entre eles usando as abas de projeto exibidas na barra de ferramentas principal.

Por padrão, no macOS, as abas de janela são ativadas somente no modo de tela cheia. Se quiser que elas sejam ativadas permanentemente, ajuste as preferências do sistema da seguinte forma:

Widget Run reformulado para a nova IU

Em resposta ao feedback que recebemos sobre a nova IU do IDE, reformulamos o widget Run no cabeçalho da janela principal para que sua aparência seja menos intrusiva e mais agradável aos olhos.

PHP

Executar arquivos temporários PHP em 3v4l.org

PhpStorm 2023.1 natively integrates with 3v4l.org and allows you to run PHP scratch files on any desired PHP version without installing anything on your local machine.

Crie um novo arquivo de rascunho PHP pressionando Ctrl+Alt+Shift+Insert.

Escolha a versão PHP desejada no menu suspenso e pressione o botão Run. Você verá a saída do script ao lado do editor.

If you find 3v4l.org useful, consider supporting its author with a donation here: github.com/sponsors/SjonHortensius.

Melhorias de desempenho

Neste lançamento, fizemos várias melhorias significativas de desempenho. Continuaremos esse esforço nas próximas atualizações. Aqui está o que você pode esperar neste lançamento.

Índices compartilhados para pacotes PHP populares

Alguns pacotes PHP são tão populares que não faz sentido reconstruir seu índice em todas as instâncias do PhpStorm. Em vez disso, já calculamos índices para você para vários pacotes PHP populares, como PHPUnit, aws/aws-sdk-php, doctrine/orm, laravel/framework, symfony/* e muitos outros.

Agora, quando você abre um projeto PHP indexado, o PhpStorm verifica composer.json para ver quais das dependências especificadas possuem um índice compartilhado previamente criado.

O PhpStorm pode baixar o índice ou ainda reconstruí-lo localmente, dependendo de a sua CPU e RAM serem mais rápidas que sua conexão com a Internet.

Você também pode gerar seus próprios índices compartilhados para seus projetos privados. Saiba mais sobre como fazer isso aqui.

Antes:

Depois:

Ação Go to Class disponível durante a indexação

Como parte dos nosso esforço para melhorar o desempenho, estamos trabalhando para garantir que o maior número possível de ações estejam disponível durante a indexação.

Go to Class (Ctrl+O ou Navigate | Class...) é uma das ações mais populares para navegar pelo código. Neste lançamento, ela está disponível a qualquer momento, mesmo enquanto seu índice está sendo reconstruído. Antes, ela exibia uma lista vazia até que a indexação fosse concluída.

O anotador é executado durante a indexação

Outra ação que agora está disponível mesmo quando a indexação ainda está em andamento é a anotação do código.

Isso significa que muitos erros e palavras-chave serão destacados pelo PhpStorm com antecedência para tornar seu fluxo de trabalho mais suave e menos demorado.

O processo Scanning files to index tornou-se inteligente

O IDE agora abre muito mais rápido, pois o PhpStorm usa os caches existentes do projeto da sessão anterior e procura novos arquivos para indexar. Se nenhuma alteração for encontrada após a verificação, o IDE estará pronto para funcionar imediatamente.

Inspeções mais rápidas

Trabalhamos para melhorar o desempenho de todas as inspeções, principalmente as mais pesadas. Algumas delas agora são 30 a 40% mais rápidas, enquanto, para outras, o desempenho aprimorado não foi tão drástico, mas o efeito combinado ainda é perceptível. Assista ao vídeo abaixo para uma comparação com as versões anteriores.

Templates Blade

Melhoramos drasticamente o desempenho do realce dentro de tags @php...@endphp. Todas as palavras-chave e construções agora são realçadas muito mais rapidamente, independentemente da complexidade do código.

Nova sugestão de IDE para redefinir as configurações do Windows Defender para melhor desempenho

As verificações de proteção em tempo real do Windows Defender podem diminuir significativamente a velocidade do IDE. Para evitar isso, o PhpStorm agora sugere adicionar certas pastas à lista de exclusões do Defender.

A notificação fornece a opção de redefinir essas configurações automaticamente ou para verificar primeiro as instruções de configuração do Defender e fazer isso manualmente.

Depurador com análise de fluxo de dados

Os usuários que preferem o Xdebug para depurar aplicativos PHP agora podem aproveitar mais um recurso avançado, chamado depurador Data Flow Analysis (DFA). Ele permite que você veja, antecipadamente, branches de código que jamais serão executados, sem precisar usar o depurador para avançar passo a passo pelo código.

O PhpStorm mostra o resultado pré-calculado das condições no inlay à direita antes da execução do código. Isto permite que você tenha uma ideia da situação no código sem precisar se aprofundar. Branches que não serão executados aparecerão acinzentados durante a sessão de depuração.

Desativar a DFA durante a depuração

Se você não tiver interesse nessas informações adicionais durante a depuração, clique com o botão direito do mouse em qualquer inlay de valor précalculado e desative o recurso DFA para a sessão de depuração atual.

Se quiser desativar o recurso permanentemente, pode fazê-lo em Preferences/Settings | PHP | Debug | Xdebug.

Limitações

Atualmente, o PhpStorm não calcula previamente valores de propriedades devido a limitações técnicas. Essa é uma área para desenvolvimento futuro.

Suporte para todas as tags PHPStan e Psalm

Todas as tags PHPStan e Psalm existentes agora são analisadas corretamente no PhpStorm. Isso deixa o código que possui muitas anotações mais legível.

Suporte a projetos de multi-composer e multi-vendor

Anteriormente, o PhpStorm tratava qualquer projeto aberto como um único espaço. No entanto, vemos cada vez mais casos em que há vários aplicativos no mesmo projeto, todos com suas próprias dependências composer.json.

Implementamos uma base para oferecer suporte a esses tipos de projetos com múltiplos arquivos composer.json e diretórios vendor. Isto traz os seguintes aprimoramentos:

  • Os diretórios excluídos são definidos corretamente, o que melhora o desempenho geral, pois executamos menos análises e inspeções. Também deixa a resolução múltipla mais estável.
  • Raízes PSR são detectadas corretamente — refatorações como Move Class funcionam conforme o esperado quando você arrasta e solta classes entre aplicativos no projeto.
  • Extensões ausentes em composer.json são relatadas corretamente por aplicativo.

Novas inspeções

Inspeções personalizadas de busca e substituição baseadas em expressões regulares

Agora, você pode usar expressões regulares para criar suas próprias inspeções de busca e substituição. Essas inspeções podem ser especialmente úteis para realçar problemas de estilo e formatação ou problemas simples relacionados ao código.

Acesse Settings/Preferences | Editor | Inspections e pressione o ícone +. Selecione Add RegExp Search Inspection (or Replace) na lista, e você será direcionado para uma caixa de diálogo na qual pode configurar sua nova inspeção.

Para inspeções mais avançadas que podem envolver verificações de hierarquia de tipo, você pode usar inspeções Structural Search and Replace (SSR). Learn more about them in the docs, or check out the example in the video.

Inspeções PHP incorporadas

Cada lançamento do PhpStorm vem com um monte de novas inspeções prontas para uso. O PhpStorm 2023.1 não é exceção, então aqui estão algumas que vale a pena mencionar:

Método de substituição/classe de extensão marcada como @final

Você pode marcar classes com a palavra-chave final, produzindo um erro fatal em caso de violação. Uma abordagem mais suave seria adicionar a tag PHPDoc @final.

Nesse caso, o PhpStorm realçará a herança incorreta, mas o código não produzirá um erro durante a execução.

Tipos de retorno incompatíveis

Com uma nova correção rápida no PhpStorm 2023.1, agora você pode adicionar um tipo de retorno compatível para métodos em classes filhas ou alterá-lo em caso de incompatibilidade.

A asserção pode ser substituída por assertTrue/assertFalse.

Múltiplas instâncias de isset() de acesso a matrizes aninhadas ou objetos podem ser substituídas por uma única.

Adicionar global para variáveis acessadas de outros arquivos.

Melhorias práticas para o PHP

Caminhos clicáveis e referências de classe para a saída var_dump() / dd() no terminal

Queremos melhorar a experiência de depuração para usuários que preferem a abordagem “dump and die”. Como primeiro passo, já ativamos caminhos de arquivo e referências de classe. Clicar neles abre o arquivo correspondente no editor.

Descrições para modos de abertura de arquivo no pop-up de complementação

Na versão anterior do PhpStorm, adicionamos descrições para diferentes formatos nas funções de data e hora.

Todas as funções que aceitam modos de arquivo agora têm uma descrição detalhada delas em uma lista suspensa de complementação. Você nunca mais terá que lembrar o que r+, a e w significam.

Mais live templates

Introduzimos mais live templates, incluindo fun para o template de função e fori para loops indexados.

Experiência do usuário

Zoom do IDE inteiro

Agora é possível ampliar e reduzir o zoom do PhpStorm como um todo, alterando o tamanho de todos os elementos da IU simultaneamente. No menu principal, selecione View | Appearance e ajuste o zoom do IDE.

Isso pode ser útil para demonstrações, transmissões ao vivo, reuniões online ou apresentações.

Com atalhos exclusivos, será mais fácil invocar essas ações. Acesse a janela Search Actions (Ctrl+Shift+A), digite “zoom ide” e atribua um atalho depois de pressionar Alt+Enter.

Opção para salvar múltiplos layouts de janela de ferramentas

Agora, você pode salvar e gerenciar vários layouts de janela de ferramentas e alternar entre eles quando necessário. Verifique as novas ações em Window | Layouts para salvar, atualizar e ativar os layouts.

Nova configuração Remember size for each tool window

A nova caixa de seleção Remember size for each tool window está disponível em Settings/Preferences | Appearance & Behavior | Tool Windows. Ela permite unificar a largura das janelas de ferramentas laterais ou manter a capacidade de ajustar livremente seus tamanhos conforme você personaliza seu layout.

Editor

Ação Fill Paragraph para arquivos Markdown

Arquivos Markdown agora são compatíveis com a ação do editor Fill Paragraph, que permite dividir longos trechos de texto em linhas de igual comprimento.

Para fazer isso, coloque o cursor dentro do parágrafo que você deseja alterar e escolha a ação no menu Edit. Você também pode usar Find Action (Ctrl+Shift+A) para procurar o comando Fill Paragraph e executá-lo.

Nova página de configurações Smart Keys para Markdown

Adicionamos uma página a Settings/Preferences | Editor | General | Smart Keys em que você pode configurar e alterar suas preferências de Markdown.

Essa página deve facilitar o gerenciamento das suas preferências, pois possui caixas de seleção separadas para diferentes recursos do editor. Antes, havia apenas uma caixa de seleção em Settings/Preferences | Languages & Frameworks.

Opção para mostrar espaços em branco apenas no código selecionado

Há uma nova caixa de seleção Selection em Settings/Preferences | Editor | General | Appearance | Show Whitespace que permite definir essa configuração de forma que o IDE mostre espaços em branco como pequenos pontos somente quando você seleciona o código.

VCS / Git / GitHub

Dicas de cores de status do VCS na janela da ferramenta Structure

Adicionamos dicas de cores para alterações na janela de ferramentas Structure.

Isso significa que agora você pode ver quais propriedades, métodos e funções foram alteradas ou adicionadas.

Pop-up Branches aprimorado

Agora é mais fácil se mover entre branches porque eles são armazenados em listas que podem ser expandidas.

Complementação automática no pop-up Create New Branch

Com o PhpStorm 2023.1 EAP #1, implementamos a complementação automática no pop-up Create New Branch. Assim que você começa a digitar um nome para seu novo branch, o IDE sugere prefixos relevantes com base nos nomes dos branches locais existentes.

Verificações de commit em segundo plano

Agora, verificações de commit para Git e Mercurial são feitas em segundo plano depois que você faz commit, mas antes de fazer push. Isso deve acelerar o processo geral de commit.

Workflow de revisão de código aprimorado para GitHub

Nossas pesquisas constataram que o cenário mais comum de uso de solicitações pull é quando um usuário vai primeiro ao GitHub e, em seguida, utiliza o IDE nos casos em que é necessário navegar por todo o código.

Para facilitar esse fluxo de trabalho, reformulamos a janela de ferramentas Pull Request. Agora, ela apresenta uma aba dedicada para cada solicitação pull que você abre. A guia exibe instantaneamente a lista de arquivos alterados, mas agora oferece menos distrações do que antes. Isso permite que você se concentre melhor na tarefa atual.

Agora também existe um botão dedicado para executar facilmente a ação considerada a mais importante com base no estado atual da solicitação pull.

Melhorias no Docker

Log combinado de todos os containers do Docker Compose

A aba Dashboard do nó do Docker Compose agora reúne logs de todos os containers do Docker Compose e os exibe num só lugar. Eles também são atualizados em tempo real.

Suporte para o Azure Container Registry

Agora, você pode se conectar facilmente ao Azure Container Registry. Acesse Preferences / Settings | Build, Execution, Deployment | Docker | Docker Registry e configure-o selecionando a opção Docker V2 no campo de entrada Registry.

Nova configuração para aplicar a opção de montagem :z para associar volumes no SELinux

Agora, você pode adicionar o sinalizador de configuração :z a bind mounts do Docker, o que permite conectar volumes a containers do Docker em estações de trabalho SELinux.

Para habilitar esta função, acesse Preferences / Settings | Advanced Settings | Docker.

Web

Suporte ao Astro

Long-awaited Astro support has landed in PhpStorm! Você pode obtê-lo com o nosso novo plug-in Astro, que pode ser instalado em Preferences / Settings | Plugins. O plug-in fornece funcionalidade básica, incluindo realce de sintaxe, complementação de código com importações automáticas, refatorações, navegação, formatação correta e muito mais.

Suporte para TypeScript em templates do Vue

Adicionamos suporte para TypeScript em templates do Vue. Ele é habilitado quando você define o atributo lang em uma tag script para ts. Anteriormente, JavaScript era sempre usado, ignorando o atributo lang na tag script. O PhpStorm agora fornece suporte para inline casting, estreitamento de tipos aprimorado e informações corretas sobre tipos inferidos na documentação rápida em templates Single-File Components (SFCs) do Vue.

Configuração do Tailwind CSS

Nesta versão, adicionamos suporte para opções de configuração, como complementação de nomes de classes personalizados na opção classAttributes ou experimentais como tailwindCSS.experimental.configFile.

Você pode definir essas opções de configuração em Preferences / Settings | Languages & Frameworks | Style Sheets | Tailwind CSS.


Essas são as mudanças mais importantes neste lançamento, mas é claro que há muitas outras: Confira o anúncio no blog do PhpStorm para obter a lista completa dos aprimoramentos deste lançamento.