PhpStorm 2020.3의 새로운 기능

PhpStorm 2020.3은 PHP 8, PHPStan, Psalm, Tailwind CSS, Xdebug 3 및 Code With Me를 이용한 공동 개발 지원을 도입한 주요 업데이트입니다.

PHP 8

PHP 8.0은 놀라운 새로운 기능이 많이 포함된 주요 언어 업데이트입니다. PhpStorm은 기존 코드가 호환되는지 확인하고, 코드베이스를 보다 신속하게 업데이트하고, 최신 언어 개선 사항을 활용할 수 있도록 도와줍니다.

언어 버전 보기

언어 버전 보기

이제 프로젝트에서 사용 중인 언어 버전을 항상 확인할 수 있습니다. 상태 표시줄에 해당 표시기를 배치했습니다. composer.json에 PHP 버전에 대한 어떤 제한 사항도 없으면 여기에서 언어 버전을 변경할 수도 있습니다.

명명된 인수 식별자 추가

명명된 인수

PHP 8의 함수 및 메서드 인수는 매개변수 이름을 지정하여 전달할 수 있습니다. 그러면 선택적 매개변수를 설정할 필요 없이 이제 호출이 자기 문서화됩니다.

PhpStorm은 다음을 지원합니다.

  • 인수 이름이 올바른지 확인합니다.
  • Alt+Enter 빠른 수정을 사용하여 매개변수 이름을 자동으로 추가합니다.
  • 중복 인수를 제거합니다.
승격된 프로퍼티로 변환

생성자 프로퍼티 승격

이 기능을 사용하면 생성자를 통해 변수를 초기화할 때 상용구 코드의 양을 줄일 수 있습니다.

PhpStorm에서 생성자 초기화 프로퍼티를 승격된 프로퍼티로 변환하거나 Convert to promoted property(승격된 프로퍼티로 변환) Alt + Enter 빠른 수정을 사용하여 다시 변경할 수 있습니다.

Nullsafe 연산자 사용위치 유효성 검사

Nullsafe 연산자

Null 검사와 함께 성가신 조건을 사용하는 대신 새로운 ?-> 연산자를 사용하면 각 요소에 대해 null에 대한 묵시적 검사로 호출 체인을 빌드할 수 있습니다.

PhpStorm은 연산자가 올바르게 사용되고 있는지 확인합니다.

switch 구문을 match 표현식으로 변환

Match 표현식

새로운 match 표현식은 switch 구문을 유형에 안전하고 간결하게 대체합니다. match 표현식을 값으로 사용하고 변수에 할당하거나 반환할 수 있습니다.

PhpStorm은 switch 블록이 match 표현식으로 변환될 수 있는지 여부를 결정하고, Alt+Enter 빠른 수정을 통해 이를 자동화할 수 있습니다.

새로운 표현식에서는 잘못된 사용을 알아채기 어려울 수 있습니다. PhpStorm이 이러한 부분을 자동으로 강조 표시합니다.

문자열에 대한 새 함수

문자열에 대한 새로운 함수: str_contains(), str_starts_with(), str_ends_with()

PHP 8에서는 str_contains() 함수를 사용하여 문자열이 다른 문자열의 일부인지 여부를 확인할 수 있습니다. PhpStorm 2020.3은 str_contains()로 대체할 수 있는 strpos()의 모든 사용 위치를 찾아서 알려줍니다.

PhpStorm은 또한 이전 substr() 호출을 새롭고 보다 명확한 str_starts_with()str_ends_with() 함수로 대체할 수 있는 위치를 강조 표시합니다.

PHP 8 기능을 지원하는 기타 기능

PHP 8 기능을 지원하는 기타 기능

  • 함수 호출 및 클로저의 use 섹션에서 마지막 매개변수 뒤의 후행 쉼표.
  • 비 캡처 catch는 예외 객체가 필요하지 않은 경우에 예외를 찾아내는 데 유용합니다.
  • 이제 Throw를 표현식으로 사용할 수 있습니다(즉, 화살표 함수, 병합 연산자 ?? 및 ternary/elvis 연산자 ?:에서 허용됨).
  • 객체에서 클래스 FQN을 가져오려면 get_class($object) 대신 $object::class를 수행하면 됩니다. 이를 위해 Alt+Enter 빠른 수정을 사용하세요.

PHP 8 속성

PHPDoc을 네이티브 공용체 유형으로 변환

PHP 8에서는 속성을 사용하여 PHPDoc 어노테이션에 의존하는 대신 구조화된 방식으로 메타데이터를 지정할 수 있습니다.

PhpStorm은 속성 작업을 위한 강조 표시, 코드 완성, 사용 위치 찾기, 리팩터링 및 기타 코딩 지원을 제공합니다. 또한 속성이 선언되고 유효하게 사용되는지 확인하는 검사 기능도 있습니다.

PhpStorm 2020.3에서는 IDE에서 바로 사용할 수 있는 여러 PHP 8 속성이 제공됩니다. We also provide them in a composer package jetbrains/phpstorm-attributes, so feel free to add it as a dependency in composer.json.

#[Deprecated] 속성

#[Deprecated]

@deprecated PHPDoc 태그와 마찬가지로 이 속성을 사용하여 향후 소프트웨어 버전에서 제거될 메서드, 함수, 클래스 또는 클래스 상수를 표시할 수 있습니다.

reasonreplacement를 지정하면 사용자에게 업그레이드해야 하는 이유를 이해시키고 Alt+Enter 빠른 수정을 사용하여 자동으로 업그레이드시킬 수 있습니다.

#[ArrayShape] 속성

#[ArrayShape]

객체와 유사한 배열의 키 및 값 유형을 정의하려면 이 속성을 사용하세요. 이렇게 하면 PhpStorm에서 얻는 코딩 지원과 분석이 향상됩니다.

참고: 한 줄로 작성하면 PHP 7.4 이전 버전에서도 작동합니다.
#[Immutable]

#[Immutable]

초기화 후 객체 변경 시도를 방지하려면 객체 또는 프로퍼티를 #[Immutable] 속성을 사용하여 표시하세요.

그러면 프로그램 상태를 예측하고 디버깅하기가 더 쉬워집니다.

속성 생성자에 전달되는 다음 상수 중 하나를 사용하여 프로퍼티의 쓰기 범위 제한을 조정하세요: CONSTRUCTOR_WRITE_SCOPE, PRIVATE_WRITE_SCOPE, PROTECTED_WRITE_SCOPE.

참고: 한 줄로 작성하면 PHP 7.4 이전 버전에서도 작동합니다.
#[Pure] 속성

#[Pure]

어떤 부작용도 없는 함수를 #[Pure]로 표시하여 PhpStorm에서 코드 흐름 분석을 개선합니다. IDE는 순수 함수의 중복 호출을 강조 표시합니다.

함수를 #[Pure]로 표시했지만 본문에서 외부 범위로부터 무언가를 변경하려는 시도가 있는 경우, PhpStorm은 안전하지 않은 코드를 강조 표시합니다.

이러한 모든 PHP 내부 함수(예: array_merge())는 이미 PhpStorm에 표시되어 있습니다.

#[ExpectedValues] 속성

#[ExpectedValues]

이 속성을 사용하여 함수가 매개변수로 허용하는 값과 반환할 수 있는 값을 지정합니다. 그러면 코드 완성도가 향상되고, 있을 수 있는 버그를 탐지하는 데 도움이 됩니다.

#[ExpectedValues].phpstorm.meta.php에 있는 expectedArguments()의 고급 버전입니다.

#[NoReturn] 속성

#[NoReturn]

스크립트 실행을 종료할 수 있는 함수를 #[NoReturn] 속성으로 표시하여 제어 흐름을 더욱 정확하게 분석할 수 있습니다.

PhpStorm은 보다 명확한 분석을 얻기 위해 빠른 수정을 통해 계층 구조 전체에 속성을 전파할지 제안합니다.

#[Language] 속성

#[Language]

RegExp, SQL 등과 같은 다른 언어로 된 텍스트를 포함하는 문자열 매개변수에 이 속성을 추가하세요. 그러면 추가 PhpStorm 기능이 표시됩니다.

Psalm 및 PHPStan 지원

이 두 가지 정적 분석기는 PhpStorm 2020.3에서 에디터의 이슈를 강조 표시하기 위한 최상위 도구로 사용할 수 있습니다. 이러한 도구를 composer.json에 dev-dependencies로 추가하고 도구 근처의 렌치 아이콘을 클릭하여 해당 검사를 활성화할 수 있습니다.

PHPStan 및 Psalm

PhpStorm은 또한 @psalm-* 태그에 대한 코드 완성 기능을 제공하고 이를 특수하게 취급하므로 강조 표시된 이슈, 정의되지 않은 클래스 등이 생기지 않습니다. 대부분의 경우 이제 태그에서 @psalm- 접두사를 제거해도 안전합니다. 즉, @psalm-return은 단순히 @return일 수 있고 @psalm-param@param일 수 있습니다.

스칼라, 숫자 및 상수가 있는 유형을 포함하여 많은 psalm 유형이 지원됩니다. 결과적으로, 검사, 코드 생성 및 코드 완성과 같이 유형 추론에 의존하는 모든 내용(검사, 코드 생성 및 완성)이 더욱 정확해졌습니다.

Xdebug 3

Xdebug 3

Xdebug 3는 PHP 디버거를 새롭게 재작업한 것으로, 훨씬 빠르게 작동하고 설정하기 쉽습니다.

XDEBUG_MODE=debug를 지정하는 것만으로 Xdebug 3 구성이 끝납니다.

Xdebug의 디폴트 디버깅 포트가 9000에서 9003으로 변경되었습니다. 간편한 마이그레이션을 위해 PhpStorm은 기본적으로 두 포트에 모두 수신 대기합니다. Xdebug의 포트 및 기타 설정은 Preferences(환경 설정)/Settings(설정) | Languages & Frameworks(언어 및 프레임워크) | PHP | Debug(디버그)에서 조정할 수 있습니다.

Learn more about Xdebug 3 in the Upgrade Guide.

Code With Me

Code With Me를 사용하여 공동 개발

PhpStorm 2020.3은 공동 개발 및 페어 프로그래밍을 위한 JetBrains의 새로운 서비스인 Code With Me를 지원합니다. Code With Me를 사용하면 IDE에 현재 열어 놓은 프로젝트를 다른 사람과 공유하고 실시간으로 함께 작업할 수 있습니다.

Code With Me에 관한 자세한 내용은 이 게시물을 확인해 주세요.

Tailwind CSS

종속성으로 추가된 도구의 설정에 빠르게 액세스

PhpStorm이 이제 Tailwind CSS를 더 생산적으로 작업할 수 있도록 도와줍니다.

IDE는 Tailwind 클래스를 자동 완성하고, 마우스오버 시 CSS 결과의 미리보기를 표시하고, tailwind.config.js 파일을 사용하여 만든 사용자 지정을 지원합니다.

HTTP 클라이언트

HTTP 클라이언트로 Guzzle 요청 실행

HTTP 클라이언트로 Guzzle 요청 실행

Guzzle is one of the most popular HTTP clients for PHP. PhpStorm 2020.3에서는 실제 코드를 실행하지 않고도 Guzzle 요청을 테스트할 수 있습니다.

요청이 지원되는 경우, 옆에 여백 아이콘이 표시됩니다. 매개변수가 미리 채워진 새 HTTP 스크래치 파일을 만들려면 이 아이콘을 클릭해 주세요.

요청을 처리한 다음, 프로젝트에 .http 파일로 저장합니다.

HTTP 요청을 cURL로 내보내기

HTTP 요청을 cURL로 내보내기

HTTP 요청으로 cURL 문자열을 가져오려면 HTTP 요청 에디터에서 Alt + Enter를 누르고 Convert to cURL and copy to clipboard(cURL로 변환하고 클립보드에 복사)를 선택하세요.

터미널에서, 또는 선택한 HTTP 클라이언트와 함께 cURL 문자열을 사용할 수 있습니다.

에디터

Markdown 편집 및 미리보기 개선 사항

Markdown 편집 및 미리보기 개선 사항

이제 Mermaid.js diagrams 및 차트를 IDE 내에서 렌더링할 수 있습니다. Preferences(환경 설정)/Settings(설정) | Languages & Frameworks(언어 및 프레임워크) | Markdown에서 이 지원을 활성화하세요.

미리보기 창의 오른쪽 상단 모서리에 에디터와의 스크롤 동기화를 활성화 및 비활성화하는 Auto-Scroll Preview(미리보기 자동 스크롤) 버튼이 있습니다.

Ctrl+Alt+L을 사용하여 코드 서식을 다시 지정할 때 사용하는 인기 있는 Markdown 코드 스타일 사전 설정이 다양하게 추가되었습니다. 설정은 Preferences(환경 설정)/Settings(설정) | Editor(에디터) | Code Style(코드 스타일) | Markdown에서 지정할 수 있습니다.

향상된 철자 및 문법 검사

향상된 철자 및 문법 검사

문법 검사 엔진이 더 많은 언어를 지원하고 고품질 문법 검사 기능을 제공합니다.

실수가 강조 표시되면 설명과 제안된 수정 사항을 포함한 팝업이 표시됩니다.

강조 표시된 텍스트 위에 캐럿이 놓인 상태에서 Alt+Enter를 누르면 이전과 같이 중첩된 목록 대신 최상위 수준에서 제안된 모든 대체 항목이 표시됩니다.

드래그 앤 드롭으로 에디터 분할

드래그 앤 드롭으로 에디터 분할

탭을 화면의 원하는 쪽으로 끌어서 여러 탭을 나란히 열수 있습니다.

분할 모드에서 탭을 여는 또 다른 방법은, Project(프로젝트) 뷰 또는 검색 창의 선택한 파일에서 Shift+Enter를 누르는 것입니다.

미리보기 탭

미리보기 탭

실제로 파일을 열지 않고도 특수 탭에서 파일을 미리 볼 수 있습니다. 이 기능을 활성화하려면 Project(프로젝트) 뷰에서 톱니바퀴 아이콘을 클릭하고 Enable Preview Tab(미리보기 탭 활성화) 및 Open Files with Single Click(클릭 한 번으로 파일 열기)을 모두 선택하세요. 미리 보고 있는 파일의 편집을 시작하면 탭이 일반 파일이 됩니다.

IDE

Search Everywhere(전체 검색) 개선 사항

Search Everywhere(전체 검색) 개선 사항

Search Everywhere(전체 검색) 팝업(Shift+Shift)에서는 결과가 약간 다른 방식으로 표시됩니다. 유형별로 그룹화되는 대신 이제 검색 쿼리와의 연관성에 따라 그룹화됩니다.

이제 Search Everywhere(전체 검색)에서 간단한 수학 계산도 할 수 있습니다. 숫자와 수학 연산자를 입력하고 바로 계산 결과를 확인하세요. 그러면 계산기 앱으로 전환하느라 작업 흐름을 끊을 필요가 없습니다.

Search Everywhere(전체 검색)에서 브랜치 및 커밋에 대한 정보를 포함하여 Git 내역을 검색할 수도 있습니다.

웹 기술

WebStorm 2020.3모든 새로운 기능 및 개선 사항은 PhpStorm 2020.3에서도 바로 사용할 수 있거나 Plugin Marketplace에서 제공되는 무료 플러그인을 통해 사용할 수 있습니다.

Problems(문제) 도구 창의 TypeScript

Problems(문제) 도구 창의 TypeScript

TypeScript 언어 서비스를 Problems(문제) 도구 창에 통합하고 TypeScript 도구 창을 제거하여 한 곳에서 코드 문제를 보다 쉽게 ​​검토할 수 있게 되었습니다. 이전에 TypeScript 도구 창에서 제공되던 액션은 상태 표시줄 상의 전용 위젯으로 옮겼습니다.

사용 위치에서 React 구성 요소 생성

사용 위치에서 React 구성 요소 생성

코드에 해결되지 않은 React 구성 요소가 있는 경우, 캐럿을 해당 위치에 놓고 Alt+Enter를 누른 다음, 목록에서 Create class/function component(클래스/함수 구성 요소 생성)를 선택하면 IDE가 적절한 코드 구문을 자동으로 생성해줍니다.

버전 관리

Git 스테이징 지원

Git 스테이징 지원

PhpStorm 2020.3에서는 Git 스테이징 영역이 지원됩니다. 이 기능을 사용하려면 Preferences(환경 설정)/Settings(설정) | Version Control(버전 관리) | Git에서 Enable staging area(스테이징 영역 활성화) 체크박스를 선택하세요.

Alt+0를 사용하여 Commit(커밋) 도구 창으로 돌아가서 스테이징된 파일과 스테이징되지 않은 파일을 확인할 수 있습니다.

파일 옆에 있는 + 아이콘을 클릭하면 파일을 스테이징합니다.

에디터의 변경 사항 옆에 있는 여백 아이콘을 사용하여 특정 라인을 스테이징할 수 있습니다.

데이터베이스 도구

DataGrip 2020.3의 새로운 기능을 살펴보세요. 이 모든 기능이 PhpStorm에도 제공됩니다.

MongoDB용 SQL

MongoDB용 SQL

이제 SQL을 사용하여 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. MongoDB용 SQL에 관해 자세히 알아보려면 이 블로그 게시물을 읽어보세요.

Couchbase 지원 및 새로운 데이터 추출기

Couchbase 지원 및 새로운 데이터 추출기

이제 PhpStorm에서 Couchbase Query 서비스가 지원됩니다. 또한 열을 쉼표로 구분된 문자열로 복사할 수 있는 One-Row, 삽입될 여러 개의 새로운 줄이 포함된 단일 INSERT 문을 생성하는 SQL-Insert-Multirow라는 두 가지 새로운 추출기가 도입되었습니다.