Olá Habr! Temos o prazer de apresentar o primeiro grande lançamento do PhpStorm este ano!Sob o corte, uma análise detalhada de todas as mudanças visíveis e novos recursos. Cuidado - muitas fotos.PhpStorm 2020.1 Toolbox App. 30- . JetBrains .
composer.json
Todas as ações para trabalhar com dependências agora estão disponíveis diretamente no arquivo composer.json
e funcionam diretamente no editor.Você pode criar um novo arquivo composer.json no menu de contexto ou usando a tecla de atalho Ctrl(⌘)+N
. O modelo para este arquivo está em Preferências / Configurações | Editor Modelos de arquivo e código .
Gerenciando dependênciasPara adicionar uma dependência, basta começar a escrever o nome do fornecedor e do pacote, e uma lista de preenchimento automático com as opções apropriadas será exibida. As versões disponíveis deste pacote serão oferecidas
no campo da versão . Por enquanto, um carro (^) ou outro símbolo para indicar um intervalo de versões terá que ser adicionado manualmente, mas em versões futuras, corrigiremos isso.Para requisitos na versão do PHP ou na presença de extensões, o preenchimento automático também funcionará.Atualizando e instalando pacotesSe composer.lock
ainda não houver um arquivo e nenhum pacote estiver instalado, o PhpStorm destacará o nome da seção require
e require-dev
. Para instalá-los, você pode clicar no botão Instalar na barra de ferramentas acima do editor. Ou use a ação de clique rápido Alt(⌥)+Enter
e selecione Instalar pacotes..
Se nem todos os pacotes estiverem instalados, o PhpStorm destacará os que estão faltando. Em seguida, Alt(⌥)+Enter
você pode chamar qualquer um deles e selecionar Atualizar pacote ou Atualizar todos os pacotes .Ao lado do requisito da versão especificada, a versão cinza será a versão do pacote que está realmente instalado. E na caixa de diálogo pop-up de pacotes, haverá informações do packagist.org sobre o número de downloads e estrelas.
O PhpStorm pega todas as informações sobre pacotes e suas versões no packagist.org e as armazena em cache.Navegação para arquivos e pastasCertamente você sabe disso clicando em Ctrl(⌘)+Click
e Ctrl(⌘)+B
pode ir para a definição de entidades ou procurar seu uso.Nisso composer.json
, também, funcionará. Se você clicar Ctrl(⌘)+Click
em um pacote, o diretório correspondente será destacado na Árvore do Projeto. E se estiver em um arquivo, ele será aberto no editor.
Clicando em Ctrl(⌘)+Click
ou Ctrl(⌘)+B
em qualquer link no composer.json
esperado, ele é aberto no navegador.Conclusão automáticanas seções de carregamento automático (-dev)O preenchimento automático com base nas informações das classes e na estrutura de diretórios do projeto funciona para namespaces e caminhos.
Ctrl(⌘)+Click
e Ctrl(⌘)+B
ir para arquivos e pastas também funciona aqui.Melhorias para scriptsEm primeiro lugar, as transições para arquivos / pastas / métodos funcionam da mesma maneira. Em segundo lugar, aliases para equipes são suportados. E em terceiro lugar, os scripts podem ser iniciados no editor pressionando o botão [play] ao lado do nome do script.Isso cria automaticamente uma configuração de execução. Isso significa que você pode executar novamente o script com uma tecla de atalho Ctrl(⌃)+R
, o que é bastante conveniente ao depurar:
Instalando ferramentas de qualidade de códigoSe houver dependências de desenvolvimentoFriendsOfPHP/PHP-CS-Fixer
, o PhpStorm verificará se a inspeção apropriada está ativada e se o conjunto de regras está instalado. Caso contrário, você pode ligar Alt(⌥)+Enter
para corrigi-lo:
Melhorias de inferência de tipo PHP
O mecanismo de inferência de tipo é a base do PhpStorm, e nesta versão foram feitas algumas mudanças notáveis.Destaque de tag extravarAdicionar tags @var
é uma boa maneira de informar ao PhpStorm o tipo de uma variável. Mas estamos constantemente aprimorando a inferência de tipo, e algumas dessas declarações podem ser redundantes, porque o PhpStorm já conhece o tipo da variável.Esses casos serão destacados e podem ser removidos usando a solução rápida Alt(⌥)+Enter
-> “Removervar” :
Rastrear tipos nulos é uma tarefa difícil, e havia lugares em que o PhpStorm não conseguia lidar com isso. Agora, em 2020.1, o PhpStorm sabe quando uma variável pode ser nula e quando não.Aqui estão alguns exemplos:
Preenchimento automático de uma matriz inicializadaDigamos que você tenha uma matriz com elementos conhecidos e, posteriormente, tente iterá-la. Anteriormente, o preenchimento automático não funcionava aqui, pois as informações de tipo foram perdidas.Em 2020.1, tudo funciona:
preenchimento automático em array_map / array_filter.Nocorpo do fechamento, que é passado para as funções array_map () e array_filter (), o complemento para argumentos agora funciona.
Cobertura de código usando PCOV e PHPDBG
Você pode criar uma cobertura de código com o Xdebug . Mas como esse é principalmente um depurador, ele possui uma sobrecarga decente. Para acelerar a obtenção de um relatório de cobertura, você pode usar ferramentas mais leves: a extensão krakjoe / pcov ou o PHPDBG embutido no PHP 5.6+.Ambos agora são suportados no PhpStorm. Você precisa criar uma configuração de execução para os testes e selecionar o driver de cobertura desejado nas configurações. Em seguida, execute os testes com o cálculo da cobertura clicando no botão
:
Leia mais sobre as diferenças no cálculo da cobertura entre Xdebug, PCOV e phpdbg no README .
Kit de Ferramentas PHPUnit
No recentemente lançado PHPUnit 9 (e já no 9.1), muitos recursos foram removidos ou preteridos. Para acelerar a migração e evitar erros, adicionamos várias inspeções e correções rápidas.
Crie um novo teste para a classeChamando Alt(⌥)+Enter
a declaração de classe e selecionando Create New PHP Test, você pode obter rapidamente o esqueleto para o teste.
Metadados
Os metadados no arquivo .phpstorm.meta.php
permitem ao PhpStorm fornecer informações adicionais sobre o seu projeto e, assim, melhorar a conclusão do código. Por exemplo, esse recurso é usado no plug - in Symfony e no Laravel IDE Helper .Você pode aprender mais sobre os recursos de metadados em um relatório PHP como uma ferramenta de desenvolvimento para o PhpStorm no PHP Russia 2019.
O PhpStorm 2020.1 adicionou uma série de melhorias para os metadados.Parâmetro directivas índice de substituição, mapa, e tipoAntes de usar override()
, map()
e type()
você pode alterar o comportamento das primeiras funções argumento. No PhpStorm 2020.1, você pode especificar um índice de parâmetro arbitrário:
Acesso às propriedades por meio de __getSe você recebeu valores de propriedades por meio de magia __get()
, as informações sobre o tipo foram perdidas. Foi possível usar tags adicionais @var
ou @property
, mas isso nem sempre foi salvo. Agora você pode especificar tudo através de metadados.
Auto-conclusão de chaves em objetos de aplicação ArrayAccessMetadados suportado ArrayAccess objetos, mas sugeriu apenas o tipo de valores. Agora, as chaves possíveis também são preenchidas automaticamente.
Pontos de saída personalizados OPhpStorm considera funções de tipo die()
e / exit()
ou lança exceções para concluir a execução. Mas os aplicativos podem ter pontos de saída mais complexos. Por exemplo, dd()
função simples ou trigger_error com o argumento E_USER_ERROR .No PhpStorm 2020.1, você pode marcar funções como pontos de saída, e isso ajustará a análise de fluxo de acordo.
Ícones para funções redefinidas por meio de metadados Aocontrário das declarações de funções cujo comportamento foi alterado com override()
, exitPoint()
ou expectArguments()
, um ícone será exibido. Clicar no ícone abrirá um arquivo .phpstorm.meta.php
no qual o comportamento muda, pois pode haver vários arquivos.
Os ícones podem estar ocultos em Preferências / Configurações | Editor Geral Ícones de calha .Aprendizado de máquina para classificar a lista de complementos
Adicionado ranking de opções de preenchimento automático com base no aprendizado de máquina.Como ver o ML em ação?O preenchimento automático com ML está desativado por padrão. Não queremos que robôs roubem nosso trabalho! Para habilitá-lo, vá para Preferências / Configurações | Editor Geral Conclusão de código e ative as opções Classificar sugestões de conclusão com base no Machine Learning e PHP .Se você também ativar a opção Mostrar mudanças de posição no pop-up de conclusão , a lista de preenchimento automático mostrará como a ordem dos elementos foi alterada.
Planejamos impedir que a revolta de carros continue a trabalhar nessa direção em versões futuras.Novas inspeções
Uma propriedade privada pode ser uma variávellocal.Uma definição de propriedade será destacada se for usada em apenas um método e for imediatamente substituída nela. Para corrigir, você pode chamar a correção rápida Alt(⌥)+Enter
“Substituir propriedade pela variável local” .
Inicialização de propriedade extraSuponha que uma propriedade privada tenha um valor padrão em uma classe, mas no construtor ela é imediatamente substituída por outro valor. Nesse caso, o valor padrão é redundante e adiciona apenas ruído.Um inicializador não utilizado será destacado e poderá ser removido com uma solução rápida Alt(⌥)+Enter
“Remover inicializador redundante” .
Altere o tipo de propriedade no PHP 7.4 para o valor padrão
Operador ternário redundanteO PhpStorm destacará expressões ternárias triviais e, com uma solução rápida, Alt(⌥)+Enter
você poderá substituí-las por expressões mais simples:
Transferência redundante por referência Ouso da transferência por referência pode levar a consequências inesperadas, e esse é um dos motivos pelos quais Nikita Popov sugeriu permitir a transferência explícita por referência quando chamada funções em PHP.Enquanto isso, o PhpStorm 2020.1 destacará os parâmetros declarados como passados por referência, mas não usados como tais. Eles podem ser removidos com segurança com solução rápida Alt(⌥)+Enter
.
O mesmo funcionará para matrizes com um link no loop foreach:
Remova o PHPDoc extra , no qual apenas a declaração de tipo agora também é bastante simples, graças à correção rápida correspondente.
Verdadeiro, por padrão, a inspeção está no nível Informações , ou seja, não será destacada. Se você deseja destacar os blocos redundantes do PHPDoc, inspecione o comentário redundante do PHPDoc em Preferências | Editor Inspeções, defina o nível de Aviso fraco ou superior.Refatoração atualizada "Método de movimentação"
Às vezes, pode ser necessário transferir um método para outra classe. Se esse método for usado várias vezes no código do projeto, o PhpStorm pode ajudar aqui.Antes, era necessário primeiro tornar o método estático e depois chamar outra ação para transferi-lo. No PhpStorm 2020.1, a refatoração “Move method” foi retrabalhada em uma única ação atômica. Foram removidas etapas extras e pop-ups, e tudo é feito de uma só vez.Passe o mouse sobre um método e pressione F6
(ou Ctrl+T
, 3
). Em seguida, selecione a classe de destino e pronto.
Para ver todas as refatorações disponíveis , você pode clicar Ctrl+T
em qualquer lugar do código.
Depuração do PHP no cliente HTTP
Agora, para ativar seletivamente a depuração, você não precisa se preocupar com os parâmetros de solicitação ou instalar a extensão no navegador. Basta criar uma solicitação HTTP em um arquivo .http
e enviá-la com o comando PHP Debug , disponível no menu Alt(⌥)+Enter
ou clicando no ícone Como resultado, um cookie será adicionado automaticamente à solicitação XDEBUG_SESSION
.
E mais algumas coisinhas para PHP
@ elementos obsoletos são exibidos como riscados na visualização em árvore da estruturaCtrl(⌘)+F12
Destacando tags correspondentes <? php /?>
Vá para o suporte de abertura / fechamentoShift+Ctrl+M (⌃+M)
Personalização do Lexer para TwigÀs vezes, pode ser necessário alterar os caracteres de tag dos modelos Twig, por exemplo, se você também usar Angular, que possui mesma sintaxe.Você pode fazer isso nas Preferências / Configurações | Idiomas e estruturas | PHP Twig .IDE
Ortografia e gramática avançadas Grazie
O plug-in Grazie está incluído no PhpStorm imediatamente, que verifica o texto não apenas em busca de erros de ortografia, mas também em gramática e estilo. Além disso, 16 idiomas são suportados e todas as verificações são realizadas localmente, sem enviar seus dados para qualquer lugar.
Por padrão, as verificações são ativadas para arquivos Markdown.Você também pode incluí-los para todos os literais de string, comentários, blocos PHPDoc e enviar mensagens.Para PHP, você pode ativar em Configurações / Preferências | Editor Revisão | Gramática .Modo LightEdit
Às vezes, você precisa procurar / corrigir rapidamente o arquivo e abrir um IDE inteiro para isso, parece demais, mas você deseja ter a luz de fundo e as funções usuais. É nesses casos que estamos trabalhando no modo LightEdit leve.Funciona assim: se você abrir o arquivo na linha de comando ou no menu de contexto do sistema operacional, enquanto o PhpStorm não estiver em execução, o arquivo será aberto no LightEdit. Bem, se um PhpStorm completo já estiver funcionando, o arquivo simplesmente será aberto nele.

Modo Zen
O novo modo combina Distraction Free e Fullscreen para uma imersão profunda no código.Ver | Aparência Entre no modo Zen
Interface
Janela do terminal dividida
Em vez de abrir novas guias e alternar entre elas, agora você pode dividir a tela e abrir várias sessões em uma guia. Para fazer isso, selecione Dividir horizontal / verticalmente no menu de contexto do terminal . Tema
IntelliJ LightO tema light foi ligeiramente atualizado e unificado para ter a mesma aparência em todos os sistemas operacionais, e seu nome foi alterado para IntelliJ Light .Personalização da barra de statusNo menu de contexto, você pode escolher quais informações serão exibidas nele.
Configuração
Configuração SSH unificada
Anteriormente, se uma conexão SSH era reutilizada em uma implantação, intérprete remoto ou terminal SSH, ela precisava ser reconfigurada a cada vez.Agora todas as conexões SSH podem ser adicionadas / editadas em Preferências / Configurações | Ferramentas | Configuração SSH e, em seguida, use-as repetidamente onde forem necessárias.
O caminho para as configurações do IDE mudou
Por exemplo, no macOS:- ~/Library/Preferences/PhpStorm2019.3
+ ~/Library/Application Support/JetBrains/PhpStorm2020.1
Mais na ajuda .Caminho personalizado para salvar configurações de execução
Anteriormente, as configurações de execução eram armazenadas em uma pasta .idea
que muitos adicionavam completamente ao .gitignore (melhor assim ). Agora você pode escolher qualquer caminho e compartilhar a configuração de execução com os colegas por meio do sistema de controle de versão.Pode ser especialmente conveniente ao integrar novos funcionários: iniciou um projeto, aberto no PhpStorm, lançado com um botão.Para fazer isso, na caixa de diálogo Configuração de execução / depuração, é necessário selecionar a opção Armazenar como arquivo de projeto e, clicando na engrenagem, você pode selecionar o caminho desejado no projeto.
Controle de versão
Novo compromisso
A janela Confirmar está disponível no modo não modal e é exibida à esquerda. Portanto, ele não bloqueia o trabalho em outros arquivos durante a preparação da confirmação e mais informações sobre as alterações são colocadas na tela.O novo Commit é ativado por padrão para novos usuários e desativado para aqueles que já possuem o PhpStorm instalado.Ativado pela opção Usar interface de confirmação não modal em Preferências / Configurações | Controle de versão | Confirmar .
Aprimoramentos do Git Branch
No canto inferior direito da janela do IDE, a ramificação Git atual é indicada. Se você clicar nele, o VCS | Git Um galhos .Aqui nós adicionamos um campo de pesquisa. O botão Atualizar atualiza a lista de ramificações remotas. E para cada confirmação, é adicionado um indicador: de entrada (azul) ou de saída (verde).
Rebase interativa reprojetada
O Git Rebase permite reescrever o histórico de confirmações. Agora você pode se livrar rapidamente de confirmações "temporárias", corrigir a mensagem ou a ordem das confirmações. Obviamente, tudo isso pode ser feito manualmente no console, mas o PhpStorm permite que você veja imediatamente o que foi alterado em um commit específico.Para começar, no histórico de confirmações, é necessário selecionar a confirmação básica desejada e selecionar Rebase interativamente daqui, no menu de contexto .
DB Tools
O PhpStorm inclui quase todos os recursos do DataGrip imediatamente , para que você possa ver a revisão do DataGrip 2020.1 lançada por nossos colegas.Rede
E, como sempre, todas as atualizações do WebStorm 2020.1 também estão incluídas no PhpStorm.Uma lista completa de alterações pode ser encontrada nas notas de versão muito grandes .Você também pode assistir à visão geral do lançamento na página " O que há de novo " e, se tiver apenas alguns minutos, aqui está um pequeno vídeo (em inglês) com uma demonstração dos principais recursos do lançamento:E isso é todo esse tempo. Obrigado por ler até o fim! Teremos o maior prazer em perguntas, desejos, relatórios de bugs e apenas pensamentos nos comentários.Se cuida!Sua equipe do JetBrains PhpStorm