Olá, Habr! Temos o prazer de apresentar o segundo grande lançamento do PhpStorm este ano!
Abaixo do corte está uma análise detalhada de todas as mudanças notáveis e novos recursos. Cuidado - muitas fotos.
Tipos de união em PHP 8
O PHP 8 terá tantos recursos novos que é até uma nova linguagem até certo ponto. Começamos a implantar o suporte para os oito primeiros e o primeiro grande recurso foram os tipos mesclados.
Tipos concatenados
T1|T2|...podem ser usados onde quer que os tipos possam ser especificados agora: em argumentos, propriedades e valores de retorno. Nesse caso, a variável pode assumir um dos tipos listados.
Na verdade, tipos concatenados têm sido usados no PHPDoc por um longo tempo, mas agora o interpretador irá realmente verificá-los em tempo de execução.
Mudando a versão do idioma
Para ver todas as possibilidades, você pode alternar manualmente a versão do idioma para PHP 8 em Languages & Frameworks | PHP | Nível de linguagem PHP .
Ou se o código já tem o uso de novos recursos, então você pode alternar usando a correção rápida (Alt + Enter).
E se a versão do PHP for especificada em composer.json, o PhpStorm a puxará automaticamente.
Convertendo PHPDoc em Tipos Combinados Nativos
Você pode chamar uma correção rápida (Alt + Enter) em uma tag PHPDoc que possui um tipo combinado.
Removendo PHPDoc desnecessário
Se o PHPDoc continha apenas declarações de tipo, agora ele pode ser removido como correção rápida redundante (Alt + Enter).
Essa exclusão sempre pode ser considerada segura e feita automaticamente antes de confirmar? Estamos considerando adicionar esse recurso.
Validação de tipo
O PhpStorm costumava ser capaz de analisar tipos e encontrar violações com base nas informações das tags PHPDoc. Com as declarações nativas, essas possibilidades se expandiram.
As verificações são feitas para tudo: propriedades, argumentos, valores de retorno.
Isso é especialmente útil em código complexo, onde as violações não são imediatamente óbvias.
O pseudo tipo falso
Algumas funções
falseem caso de erro. Por exemplo, esta é a forma como eles se comportam strpos(), array_search()e 310 outras funções padrão.
Nesse caso, seria possível especificar o tipo de retorno como concatenado, por exemplo
int|bool, mas na verdade trueele nunca estará lá.
Para tais casos, um pseudótipo foi introduzido
false. Ele só pode ser usado em junções. Caso contrário, o PhpStorm destacará o código inválido.
Tipos duplicados e redundantes
Muitas combinações em uniões de tipo são proibidas ou simplesmente desnecessárias. Por exemplo:
bool|false- porque false está incluído embool;Foo|Fooouint|string|INT- repetição;object|User-objectconscientemente contém tudo o mais;iterable|arrayouiterable|Traversable-iterableinclui array e Traversable;void- só pode ser usado no valor de retorno e apenas por si;falseounull- apenas como parte de uma associação.
PhpStorm irá destacar todas essas violações.
Tipos anuláveis
A sintaxe antiga
?Typeagora é considerada uma abreviação de Type|null.
Mas a abreviação c
?não pode ser usada em junções, porque há uma ambigüidade insolúvel.
Para esses casos, o PhpStorm tem uma solução rápida (Alt + Enter).
Alterando tipos com herança
Existem duas regras para os métodos:
O tipo de parâmetro é contravariante , ou seja, pode ser estendido.
O tipo de retorno é covariante , ou seja, só pode ser reduzido.
Nesse caso, a ordem dos tipos não importa e é
Type1|Type2equivalente Type2|Type1.
O tipo de propriedade não pode ser alterado O
tipo de uma propriedade herdada deve ser reduzido ao pai, por exemplo:
Novo mecanismo de controle de fluxo
Uma atualização do mecanismo de fluxo de controle tornou possível adicionar novas inspeções e corrigir muitos bugs antigos. Como resultado, o PhpStorm entende o código ainda melhor.
Em alguns locais será possível perceber realces e avisos de novas inspeções. Alguns deles podem exigir sua atenção como fontes potenciais de bugs. Consertar outros apenas tornará o código mais limpo.
Aqui estão alguns exemplos de inspeções.
A variável é sempre verdadeira ou falsa
Exemplo no arquivo Parser.php de doctrine / orm.
A condição é sempre verdadeira
Exemplo no arquivo FormValidator.php do symfony / form. O
resultado da instância é sempre verdadeiro
Exemplo no arquivo Logger.php do symfony / monolog-bridge.
$thissempre será do tipoResetInterfaceporque aquele é mais alto na hierarquia.
Expression é sempre null
Exemplo no arquivo ProcessUtils.php do symfony / process.
Nova ação: Informações de tipo (⌃⇧P / Ctrl + Shift + P)
Você pode passar o cursor sobre qualquer expressão e chamar esta ação para ver que tipo o PhpStorm inferiu para a expressão. Disponível no menu Exibir | Digite Informações ou pela tecla de atalho ⌃⇧P / Ctrl + Shift + P.
Melhorias no compositor
Desde a versão 2020.1, todas as ações com dependências do Composer podem ser realizadas diretamente no PhpStorm no arquivo composer.json. Existem várias melhorias nesta versão.
Suporte para repositórios personalizados Satis / Packagist
Se você especificar uma fonte personalizada na seção “repositórios”, o auto- completar de código estará disponível para todos os pacotes a partir dele. As informações de pacote e versão serão armazenadas em cache no PhpStorm.
Além disso, quando várias versões são especificadas
Se as versões forem listadas separadas por vírgulas ou
||barra vertical ( ), o PhpStorm agora funcionará corretamente e mostrará as opções disponíveis.
Link para o código e o site
Cada pacote no pop-up com informações possui links para sites.
Configurações de ferramentas de qualidade de código
Se na lista de dependências existem ferramentas de qualidade de código que são suportadas no PhpStorm, então ao lado delas haverá um ícone com uma chave inglesa para ir para as configurações.
Melhorias nas ferramentas de qualidade de código
A propósito, sobre ferramentas de qualidade. PhpStorm 2020.2 tem algumas adições úteis.
Docker Compose
suporta PHP_CodeSniffer, PHP CS Fixer e PHP Mess Detector podem ser executados via docker compose.
Listas de exceções para PHP_CodeSniffer
Se
ruleset.xmlhouver uma seção no custom "exclude-pattern", agora ela será levada em consideração e os arquivos nos caminhos especificados não serão analisados no IDE.
A formatação por meio de um intérprete remoto
PHP CS Fixer e PHPCBF pode ser executada com um intérprete via SSH, Docker, Docker Compose, Vagrant e outros.
Ferramentas de linha de comando
Todos os comandos Symfony, Laravel Artisan, Drupal Drush, WP-CLI e scripts do Composer podem ser executados muito rapidamente no PhpStorm sem abrir um terminal.
Para fazer isso, adicione a ferramenta apropriada em Ferramentas | Suporte a ferramenta de linha de comando .
Em seguida, clicando em, a
Ctrl-Ctrllinha Executar qualquer coisa aparece , na qual todos os comandos com preenchimento automático estão disponíveis.
A partir desta versão, você nem precisa configurar nada para Symfony, Laravel e Drush. Basta abrir o projeto, clicar
Ctrl-Ctrle começar a digitar o comando.
️ Para Laravel no macOS, o arquivo
artisandeve ser executável ( chmod +x artisan).
Além disso, as ferramentas agora podem ser executadas por meio de qualquer interpretador remoto (SSH, Docker, Docker Compose, Vagrant). Por exemplo, você pode testar rapidamente seu aplicativo PHP 8 adicionando um interpretador Docker de uma imagem
php:rc-cli.
Nova refatoração: extração de classe
As aulas parecem organizadas e limpas no início. Então, mais e mais novos métodos e propriedades são adicionados a eles e, mais cedo ou mais tarde, a classe já está "inchada" e sobrecarregada com responsabilidades de todos os lados.
Alocar vários métodos e propriedades relacionados em uma nova classe pode ajudar aqui. Isso é exatamente o que a nova refatoração Extract Class oferece.
Para experimentar, dentro da classe você precisa clicar
Ctrl+Te selecionar Extrair Classe . PhpStorm solicitará que você insira o nome da nova classe, e você pode selecionar imediatamente mais métodos e classes para recuperar.
Essa refatoração também funciona para funções regulares.
E mais para PHP
Nova inspeção: a propriedade digitada pode não estar atribuída
Se uma propriedade digitada for declarada, mas não inicializada, uma tentativa de lê-la resultará em um erro
TypeError(a menos que um mágico seja definido __get()). PhpStorm destacará a leitura de propriedades não inicializadas.
Nova inspeção: matriz usada apenas com acesso de gravação
Exemplo do arquivo SchemaTool.php de doctrine / orm.
A matriz
$pkColumnsno método é gatherColumns()atualizada, mas nunca lida.
Customizando getters e setters gerados
Agora você pode personalizar a nomenclatura do método escolhendo entre
camelCase()e snake_case().
E também personalizar a ordem em que são adicionados à classe.
Ambas as opções estão disponíveis no Editor | Estilo de código | PHP na guia Geração de código .
Resolução correta para muitos projetos em uma janela
Se você abrir vários projetos em uma janela, poderá frequentemente ver erros de que a classe foi definida várias vezes. E ao tentar chegar à definição de uma classe, você ainda tinha que escolher qual.
O PhpStorm 2020.2 não tem esses bugs e a transição funciona conforme o esperado.
Prioridade inferior para classes do fornecedor
Na lista de preenchimento automático, a prioridade será dada às classes diretamente do projeto, e as entidades da pasta
vendore arquivos PHAR irão com uma classe inferior .
Adicionar cursor a todas as linhas selecionadas
A nova ação Adicionar acento circunflexo por linha selecionada adiciona um cursor no final de cada linha selecionada e o desmarca. Pode ser invocado usando as teclas ⌥⇧G / Alt + Shift + G.
Suporte total para solicitações pull do GitHub
O suporte à solicitação básica de pull apareceu no PhpStorm 2018.3. Houve atualizações desde então, mas muitas ações ainda exigiam a mudança para o navegador.
No PhpStorm 2020.2, todo o trabalho de solicitação de pull pode ser feito diretamente no IDE!
Você pode acessar solicitações pull do VCS | Git | Veja as solicitações pull , na barra de ferramentas ou clicando em
Alt+7. O primeiro será uma lista de solicitações disponíveis com opções de pesquisa e filtragem.
Clicar em uma solicitação de pull abrirá informações detalhadas sobre ela: revisores, tags, arquivos alterados, linha do tempo.
Todo o fluxo da revisão pode ser feito ali mesmo. Inicie e solicite uma revisão, comente sobre as mudanças na linha ou no nível de confirmação, envie uma revisão, mescle.
Os resultados das verificações, incluindo aqueles do IC, serão exibidos na linha do tempo.
Anteriormente, para mesclar uma solicitação pull, você precisava criar um branch local. Agora não é necessário e você pode mesclar pressionando um botão.
Suporte OpenAPI
O plugin de especificações OpenAPI está disponível para todos os IDEs JetBrains e funciona desde 2020.2. Nos arquivos de especificação Open API (
openapi.yaml/ openapi.jsone swagger.yaml/ swagger.json), ele fornece destaque, aumento, validação e navegação.
Além disso, as seguintes opções estão disponíveis:
- Integração com Swagger UI - renderiza diretamente na janela IDE.
- Geração de código.
- Diferença estrutural para especificações OpenAPI - permite detectar rapidamente mudanças significativas.
- Ícones Gatter para criar solicitações rapidamente em um cliente HTTP.
- Conclusão de endpoints no cliente HTTP.
- Renomear refatoração - se você renomear um endpoint em uma especificação, ele será automaticamente renomeado na solicitação do cliente HTTP.
Novo widget de inspeção
O canto superior direito do editor agora exibe um widget com o número de problemas no arquivo atual.
Usando as setas, você pode pular rapidamente para o próximo problema / anterior (anteriormente, isso poderia ser feito com as teclas
F2/ Shift+F2).
No widget, você pode escolher qual nível de problema será mostrado, por exemplo, apenas erros de sintaxe ou todos os problemas.
E clicando no widget, uma nova janela de Problemas será aberta com uma lista de todos os problemas detectados no arquivo.
Controle de versão
Git do WSL 2
PhpStorm agora é capaz de usar o binário WSL Git. Além disso, o próprio IDE determina se WSL está instalado e se o Git está disponível nele.
As configurações estão disponíveis em Preferências | Controle de versão | Git .
️ Git funcionará apenas com WSL2, porque Git de WSL1 é instável e pode levar a resultados incorretos de comandos Git.
IU aprimorada para comparar branches
PhpStorm permite que você compare quaisquer branches e veja quais commits foram para um ou outro. Para fazer isso, selecione qualquer ramificação disponível no pop-up VCS | Ramificações e selecione Comparar com a atual no menu de contexto .
No PhpStorm 2020.2, os logs e diferenças de commits serão exibidos diretamente no editor. Isso permite que mais informações sejam exibidas na tela.
Diálogos de comando atualizados
Os diálogos para os comandos Git Merge, Pull e Rebase foram reprojetados e unificados. Adicionadas opções ausentes e agora você pode ver o comando Git completo que será executado.
Todos os comandos estão disponíveis no VCS | Git .
Nova ação: remover commit
Um commit local extra ou temporário agora pode ser removido diretamente do log no PhpStorm. Para fazer isso, selecione Abandonar commit no menu de contexto no commit .
Nova ação: mesclar commits em um (squash)
Você também pode combinar vários commits em um. Por exemplo, pode ser conveniente limpar o histórico antes de criar uma solicitação pull ou antes de enviar alterações. Selecione
vários commits no log e selecione Squash Commits ... no menu de contexto.
Para ambas as ações, os bastidores estão prontos
git rebase.
Ferramentas DB
O PhpStorm pronto para uso inclui quase todos os recursos do DataGrip que são abordados na visão geral do lançamento do DataGrip 2020.2 de nossos colegas.
Rede
E, como sempre, todas as atualizações do WebStorm 2020.2 estão incluídas no PhpStorm também. Por exemplo, usando um plug - in , o Prettier também pode ser usado como o formatador padrão para arquivos PHP.
Você pode baixar o PhpStorm 2020.2 na página “ Novidades ”.
E aqui está um vídeo (em inglês) mostrando as principais características do lançamento:
Isso é todo esse tempo. Obrigado por ler até o fim! Teremos o maior prazer em ter perguntas, desejos, relatórios de bugs e apenas ideias nos comentários.
Sua equipe JetBrains PhpStorm