Novidades no PhpStorm 2020.3

O PhpStorm 2020.3 é uma atualização importante que apresenta suporte para PHP 8, PHPStan, Psalm, Tailwind CSS, Xdebug 3 e desenvolvimento colaborativo via Code With Me.

PHP 8

O PHP 8.0 é uma grande atualização da linguagem com muitos novos recursos incríveis. O PhpStorm ajudará você a verificar se o seu código existente é compatível com ele, atualizar sua base de código com mais rapidez e aproveitar as últimas melhorias na linguagem.

Veja a versão da linguagem

Veja a versão da linguagem

Agora, você sempre pode ver qual versão da linguagem está sendo usada em um projeto. Colocamos o indicador correspondente na barra de status. A partir de lá, você também poderá alterar a versão da linguagem se composer.json não listar nenhuma restrição à versão do PHP.

Adicionar identificadores de argumentos nomeados

Argumentos nomeados

Argumentos de função e método no PHP 8 podem ser transmitidos por meio da especificação de um nome de parâmetro. Isso dispensa a necessidade de definir parâmetros opcionais e significa que as chamadas agora são autodocumentadas.

O PhpStorm pode ajudar a:

  • Verificar se os nomes dos argumentos estão corretos.
  • Adicionar nomes de parâmetros automaticamente com uma correção rápida Alt+Enter.
  • Remover argumentos redundantes.
Converter em propriedade Promoted

Promoção de propriedades de construtores

Esse recurso permite reduzir a quantidade de código reutilizável ao inicializar variáveis por meio de um construtor.

No PhpStorm, você pode converter propriedades inicializadas pelo construtor em propriedades promovidas ou alterá-las novamente com a correção rápida Convert to promoted property Alt+Enter.

Validar usos do operador nullsafe

Operador Nullsafe

Em vez de ter que usar condições complicadas com verificações de nulos, o novo operador ?-> permite que você crie cadeias de chamadas com verificações implícitas de nulos para cada elemento.

O PhpStorm garante que o operador esteja sendo usado corretamente.

Converter instrução switch em uma expressão match

Expressão match

A nova expressão match é uma alternativa compacta e segura de tipo à instrução switch. Uma expressão match pode ser usada como um valor e atribuída a uma variável ou retornada.

O PhpStorm determinará se um bloco switch pode ser convertido em uma expressão match e fará isso automaticamente com uma correção rápidaAlt + Enter.

Com a nova expressão, pode ser difícil ver usos incorretos. O PhpStorm os realçará para você.

Novas funções para strings

Novas funções para strings: str_contains(), str_starts_with(), str_ends_with()

No PHP 8, você pode usar a função str_contains() para determinar se uma string faz parte de outra string. O PhpStorm 2020.3 chama sua atenção para qualquer uso de strpos() que possa ser substituído por str_contains().

O PhpStorm também realça os locais em que chamadas substr() antigas podem ser substituídas pelas novas e mais autoexplicativas funções str_starts_with() e str_ends_with().

Outros recursos do PHP 8 com suporte

Outros recursos do PHP 8 com suporte

  • Vírgula final após o último parâmetro em uma chamada de função e na seção use de fechamentos.
  • "Catches" de não captura são úteis para capturar exceções quando você não precisa de um objeto de exceção.
  • "Throw" agora pode ser usado como uma expressão (ou seja, é permitido em funções de seta, no operador de coalescência ?? e no operador ternário/elvis ?:).
  • Para obter uma classe FQN de um objeto, você pode fazer $object::class em vez de get_class($object). Use uma correção rápida Alt+Enter para isso.

Atributos do PHP 8

Converter PHPDoc em tipos de união nativos

O PHP 8 permite que você use atributos para especificar metadados de uma maneira estruturada em vez de depender de anotações PHPDoc.

O PhpStorm fornece realce, complementação de código, localização de usos, refatorações e outros tipos de assistência de codificação para trabalhar com atributos. Ele também tem inspeções para garantir que os atributos sejam declarados e usados de forma válida.

O PhpStorm 2020.3 acompanha vários atributos do PHP 8 disponíveis imediatamente no IDE. We also provide them in a composer package jetbrains/phpstorm-attributes, so feel free to add it as a dependency in composer.json.

Atributo #[Deprecated]

#[Deprecated]

Como a tag PHPDoc @deprecated, você pode usar esse atributo para marcar métodos, funções, classes ou constantes de classe que serão removidos em versões futuras do software.

Especifique reason e replacement para que seus usuários entendam por que precisam atualizar e possibilite que eles façam isso automaticamente com uma correção rápida Alt+Enter.

Atributo #[ArrayShape]

#[ArrayShape]

Use esse atributo para definir as chaves e os tipos de valores de matrizes semelhantes a objetos. Isso melhorará a assistência de codificação e a análise que você obtém com o PhpStorm.

Observação: se for escrito em uma linha, isso também funciona no PHP 7.4 e versões anteriores.
#[Immutable]

#[Immutable]

Marque objetos ou propriedades com o atributo #[Immutable] quando quiser evitar qualquer tentativa de alterar o objeto após a sua inicialização.

Isso torna o estado do programa mais previsível e a depuração mais fácil.

Ajuste a restrição do escopo de gravação das propriedades com uma das seguintes constantes transmitidas ao construtor de atributo: CONSTRUCTOR_WRITE_SCOPE, PRIVATE_WRITE_SCOPE, PROTECTED_WRITE_SCOPE.

Observação: se for escrito em uma linha, isso também funciona no PHP 7.4 e versões anteriores.
Atributo #[Pure]

#[Pure]

Marque funções que não produzem efeito colateral como #[Pure] para melhorar a análise do fluxo de código no PhpStorm. O IDE realçará chamadas redundantes de funções puras.

Se você marcar uma função como #[Pure], mas, em seu corpo, houver uma tentativa de alterar algo do escopo externo, o PhpStorm realçará o código não seguro.

Todas essas funções internas do PHP, por exemplo, array_merge(), já estão marcadas no PhpStorm.

Atributo #[ExpectedValues]

#[ExpectedValues]

Use esse atributo para especificar quais valores uma função aceita como parâmetros e quais ela pode retornar. Isso melhorará a complementação de código e ajudará a detectar possíveis bugs.

#[ExpectedValues] é uma versão avançada de expectedArguments() proveniente de .phpstorm.meta.php.

Atributo #[NoReturn]

#[NoReturn]

Marque as funções que podem encerrar a execução de um script com um atributo #[NoReturn] para obter uma análise de fluxo de controle mais precisa.

O PhpStorm se oferecerá para propagar o atributo para baixo na hierarquia com uma correção rápida para obter uma análise ainda mais bem definida.

Atributo #[Language]

#[Language]

Adicione esse atributo a parâmetros de string contendo texto em outra linguagem, como RegExp, SQL e assim por diante. Isso revelará recursos adicionais do PhpStorm.

Suporte para Psalm e PhPstan

Ambos os analisadores estáticos podem ser usados no PhpStorm 2020.3 como ferramentas de primeira classe para realçar problemas no editor. Adicione-os como dev-dependencies em composer.json e ative a inspeção correspondente clicando em um ícone de chave inglesa próximo à ferramenta.

PHPStan e Psalm

O PhpStorm também fornece complementação de código para tags @psalm-* e as trata como especiais. Portanto, não haverá problemas com realce, classes indefinidas e assim por diante. Na maioria dos casos, agora é seguro remover o prefixo @psalm- de tags. Ou seja, @psalm-return pode simplesmente ser @return e @psalm-param pode ser @param.

Muitos tipos de psalm têm suporte, incluindo escalar, numérico e tipos com constantes. Consequentemente, tudo o que depende da inferência de tipos tornou-se mais preciso: inspeções, geração de código e complementação.

Xdebug 3

Xdebug 3

O Xdebug 3 é um novo retrabalho do depurador PHP. Ele funciona muito mais rápido e é mais fácil de configurar.

Para configurar o Xdebug 3, a única coisa que você precisa especificar é XDEBUG_MODE=debug.

A porta de depuração padrão para o Xdebug foi alterada de 9000 para 9003. Para facilitar a migração, o PhpStorm escuta ambas as portas por padrão. A porta e outras configurações do Xdebug podem ser ajustadas em Preferences/Settings | Languages & Frameworks | PHP | Debug.

Learn more about Xdebug 3 in the Upgrade Guide.

Code With Me

Desenvolvimento colaborativo com Code With Me

O PhpStorm 2020.3 oferece suporte ao Code With Me, um novo serviço da JetBrains para desenvolvimento colaborativo e programação em pares. Com o Code With Me, você pode compartilhar o projeto que está aberto no momento no seu IDE com outras pessoas e todos trabalham nele em tempo real.

Confira estes posts para saber mais sobre o Code With Me.

Tailwind CSS

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

Agora, o PhpStorm pode ajudar você a trabalhar com o Tailwind CSS de maneira muito mais produtiva.

O IDE complementará automaticamente suas classes Tailwind, mostrará uma visualização do CSS resultante quando você passar o mouse e oferecerá suporte às personalizações que você fizer usando arquivos tailwind.config.js.

Cliente HTTP

Execute solicitações Guzzle com o cliente HTTP

Execute solicitações Guzzle com o cliente HTTP

Guzzle is one of the most popular HTTP clients for PHP. No PhpStorm 2020.3, você pode testar solicitações Guzzle sem executar o código real.

Se a solicitação for compatível, haverá um ícone de medianiz ao lado dela. Clique nesse ícone para criar um novo arquivo de trabalho HTTP com os parâmetros previamente preenchidos.

Experimente a solicitação e salve-a como um arquivo .http no seu projeto.

Exportar solicitações HTTP para cURL

Exportar solicitações HTTP para cURL

Para obter uma string cURL de uma solicitação HTTP, pressione Alt+Enter no editor de solicitações HTTP e selecione Convert to cURL and copy to clipboard.

Você pode usar a string cURL no terminal ou com a sua escolha de cliente HTTP.

Editor

Edição de Markdown e melhorias de visualização

Edição de Markdown e melhorias de visualização

Diagramas Mermaid.js e gráficos agora podem ser renderizados dentro do IDE. Habilite esse suporte em Preferences/Settings | Languages & Frameworks | Markdown.

Há um botão Auto-Scroll Preview no canto superior direito do painel de visualização que ativa e desativa a rolagem síncrona com o editor.

Adicionamos várias predefinições de estilos de código Markdown que funcionam quando você reformata o código com Ctrl+Alt+L. Essas configurações estão em Preferences/Settings | Editor | Code Style | Markdown.

Melhorias em verificações ortográficas e gramaticais

Melhorias em verificações ortográficas e gramaticais

O mecanismo de verificação gramatical oferece suporte a mais idiomas e oferece verificações gramaticais de mais alta qualidade.

Quando um erro for realçado, haverá um pop-up com uma explicação e uma sugestão de correção.

Se você pressionar Alt+Enter com um cursor sobre o texto realçado, verá todas as substituições sugeridas no nível superior, em vez de uma lista aninhada como antes.

Divida o editor arrastando e soltando

Divida o editor arrastando e soltando

Abra várias guias lado a lado arrastando uma guia até o lado desejado da tela.

Outra maneira de abrir guias no modo dividido é pressionar Shift+Enter em um arquivo selecionado na exibição Project ou em qualquer janela de pesquisa.

Guia de visualização

Guia de visualização

Você pode visualizar arquivos em uma guia especial sem realmente abri-los. Para habilitar esse recurso, clique no ícone de engrenagem na exibição Project e selecione Enable Preview Tab e Open Files with Single Click. Se você começar a editar um arquivo que está visualizando, a guia se tornará um arquivo comum.

IDE

Melhorias no Search Everywhere

Melhorias no Search Everywhere

No pop-up Search Everywhere (Shift+Shift), os resultados serão mostrados de uma maneira ligeiramente diferente. Em vez de serem agrupados por tipo, agora eles serão agrupados com base em sua relevância para a consulta de pesquisa.

Agora, também é possível realizar cálculos matemáticos simples no Search Everywhere. Digite alguns números e operadores matemáticos e veja os resultados do cálculo imediatamente. Isso elimina a necessidade de mudar para um aplicativo de calculadora e interromper seu fluxo.

O Search Everywhere também pode pesquisar no histórico do Git, incluindo informações sobre branches e submissões.

Tecnologias Web

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

TypeScript na janela de ferramentas Problems

TypeScript na janela de ferramentas Problems

Integramos o serviço de linguagem TypeScript à janela de ferramentas Problems e removemos a janela de ferramentas TypeScript, para facilitar a análise dos problemas no seu código em um só lugar. Também movemos as ações anteriormente disponíveis na janela de ferramentas TypeScript para um widget dedicado na barra de status.

Crie um componente React a partir do uso

Criar um componente React a partir do uso

Se você tiver um componente React não resolvido no seu código, coloque o sinal de intercalação sobre ele, pressione Alt+Enter e selecione "Create class/function component from the list". O IDE criará o construto de código relevante para você.

Controle de versão

Suporte a preparações do Git

Suporte a preparações do Git

O PhpStorm 2020.3 vem com suporte para a área de preparação Git. Para ativá-lo, marque a caixa de seleção Enable staging area em Preferences/Settings | Version Control | Git.

Volte para a janela de ferramentas Commit usando Alt + 0 para ver os arquivos preparados e não preparados.

Prepare arquivos clicando no ícone + ao lado deles.

Você pode preparar linhas específicas usando o ícone de medianiz próximo às alterações no editor.

Ferramentas de banco de dados

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

SQL para MongoDB

SQL para MongoDB

Agora, você pode usar o SQL para consultar bancos de dados MongoDB. PhpStorm 2020.3 supports SELECT queries with clauses such as JOIN, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT, OFFSET, and all available MongoDB functions except map, reduce, filter, and let. Se quiser saber mais sobre o SQL para MongoDB, leia este post de blog.

Suporte para Couchbase e novos extratores de dados

Suporte para Couchbase e novos extratores de dados

Agora, o PhpStorm oferece suporte ao serviço Couchbase Query. Também introduzimos dois novos extratores: One-Row, que permite copiar uma coluna para uma string separada por vírgulas, e SQL-Insert-Multirow, que gera uma única instrução INSERT com várias novas linhas a serem inseridas.