PhpStorm 2023.1의 새로운 기능

PhpStorm 2023.1은 새로운 UI 개선 사항, 3v4l.org 통합 기능, 성능 향상, DFA를 지원하는 디버거, 여러 composer.json 프로젝트 지원 등이 포함된 주요 업데이트 버전입니다.

새로운 UI 베타

기본적으로 비활성화된 새로운 UI가 이전 릴리스에 도입되었습니다. 이번 릴리스의 경우 사용자 피드백과 연구를 바탕으로 지속적으로 새로운 UI를 개선하고 있습니다. 아래에서 몇 가지 개선 사항을 확인해 보세요.

새로운 UI는 Preferences(환경 설정)/Settings(설정) | Appearance & Behavior(모양 및 동작) | New UI(새로운 UI)에서 활성화할 수 있습니다.

Compact Mode(콤팩트 모드)

Compact Mode(콤팩트 모드)는 작은 화면에서 새로운 UI 적용 시 사용자 경험을 개선합니다. 이 모드에는 슬림한 툴바 및 도구 창 헤더, 여백 축소, 더 작은 아이콘 및 버튼이 구현되어 조작보다는 코드에 집중할 수 있습니다.

Compact Mode를 켜려면 View(보기) 메뉴로 이동하여 Appearance(모양) | Compact Mode를 선택합니다.

새로운 UI 적용 시 탭이 숨겨진 경우 파일 이름이 표시되는 패널

이제 에디터 탭이 숨겨진 경우 현재 열려 있는 파일 이름이 표시되는 패널이 있습니다.

도구 창의 세로 분할

새로운 UI의 이 설정을 사용하면 도구 창 영역을 2개의 창으로 분할하여 동시에 볼 수 있도록 정렬할 수 있습니다. 기존 UI에서 지원되었지만 새 버전에는 없던 기능입니다.

이 영역에 도구 창을 추가하여 아래쪽에 배치하려면 사이드바를 따라 해당 아이콘을 드래그하여 구분선 아래에 놓습니다. 또는 아이콘을 마우스 오른쪽 버튼을 클릭하여 Move to(다음으로 이동) 액션을 사용하면 도구 창의 새 위치를 지정할 수 있습니다.

새로운 UI 적용 시 macOS의 프로젝트 탭

동일한 창에서 여러 프로젝트를 여는 경우, macOS 사용자는 메인 툴바 아래에 표시된 프로젝트 탭을 사용하여 프로젝트 사이를 쉽게 전환할 수 있습니다.

기본적으로 macOS 사용 시 창 탭이 전체 화면 모드에서만 활성화됩니다. 계속 활성화된 상태로 두려면 다음과 같이 시스템 환경 설정을 조정하면 됩니다.

새로운 UI에 맞춰 새롭게 디자인된 Run(실행) 위젯

IDE의 새로운 UI에 대한 피드백을 고려하여, 메인 창 헤더의 Run(실행) 위젯 디자인을 차분하고 보기 편하게 개선했습니다.

PHP

3v4l.org에서 PHP 스크래치 파일 실행

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.

Ctrl+Alt+Shift+Insert을 누르면 새 PHP 스크래치 파일이 생성됩니다.

드롭다운 메뉴에서 원하는 PHP 버전을 선택하고 Run(실행) 버튼을 누르면 에디터 옆에 스크립트의 출력이 표시됩니다.

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

성능 개선 사항

이 릴리스에는 몇 가지 주요 성능 개선 사항이 적용되었습니다. 다음 업데이트에도 성능 개선을 위한 노력은 지속될 예정입니다. 이번 릴리스의 성능 개선 내용은 다음과 같습니다.

인기 PHP 패키지의 공유 색인

매우 인기 있는 일부 PHP 패키지의 경우 모든 PhpStorm 인스턴스에서 색인을 다시 빌드하는 것은 합리적이지 않습니다. 따라서 PHPUnit, aws/aws-sdk-php, doctrine/orm, laravel/framework, symfony/* 등 여러 인기 PHP 패키지에 대한 색인을 미리 계산해 두었습니다.

이제 색인이 생성된 PHP 프로젝트를 열면 PhpStorm은 지정된 종속성 중 사전 빌드된 공유 색인이 있는지 확인하기 위해 composer.json을 검사합니다.

그 후 사용자의 CPU와 RAM이 인터넷 연결보다 빠른지 여부에 따라 색인을 다운로드하거나 로컬에서 다시 빌드합니다.

또한 사용자가 개인 프로젝트에 대한 고유한 공유 색인을 생성할 수도 있습니다. 자세한 내용은 여기에서 알아보세요.

이전:

이후:

색인 생성 중 사용 가능한 Go to Class(클래스로 이동) 액션

성능 개선을 위한 노력의 일환으로, 색인 생성 중 사용 가능한 액션을 최대한 많이 지원하고자 합니다.

Go to Class(클래스로 이동)(Ctrl+O 또는 Navigate(탐색) | Class...(클래스...))는 코드를 탐색하는 가장 인기 있는 액션 중 하나입니다. 이번 릴리스에서는 언제든, 색인을 다시 빌드하는 중에도 해당 액션을 사용할 수 있습니다. 이전에는 색인 생성이 완료될 때까지 빈 목록이 표시되었습니다.

색인 생성 중 실행되는 어노테이터

색인 생성이 진행 중인 경우에 사용할 수 있게 된 또 다른 액션은 코드에 어노테이션을 추가하는 것입니다.

즉, PhpStorm은 여러 오류 및 소프트 키워드를 미리 강조 표시하여 작업 흐름을 더 원활히 만들고, 소요 시간을 단축합니다.

더 스마트한 Scanning files to index(색인 생성할 파일 검사 중)

PhpStorm은 이전 세션의 기존 캐시를 사용하고 색인을 생성할 새 파일을 찾으므로 IDE가 더 빠르게 열립니다. 검사 후 확인된 변경 사항이 없으면 IDE를 바로 사용할 수 있습니다.

검사 속도 향상

모든 검사, 특히 가장 리소스 부담이 큰 검사의 성능을 개선하기 위해 노력하고 있습니다. 일부 검사는 속도가 30~40% 빨라졌으며, 그 외에 성능이 급격하게 향상된 건 아니지만 이와 관련된 효과를 확인할 수 있는 다른 검사도 있습니다. 이전 버전과 비교하려면 아래의 동영상을 확인해 보세요.

Blade 템플릿

@php...@endphp 태그 내 강조 표시 성능이 대폭 개선되었습니다. 이제 코드 복잡성과 무관하게 모든 키워드 및 구문이 훨씬 빠르게 강조 표시됩니다.

Windows Defender 설정 재구성을 요청하는 새로운 IDE 제안으로 성능 향상

Windows Defender의 실시간 보호 검사로 인해 IDE 속도가 크게 저하될 수 있습니다. PhpStorm은 이를 방지하기 위해 Defender의 제외 목록에 특정 폴더를 추가할 것을 제안합니다.

알림에서는 해당 설정을 자동으로 재구성하거나 Defender의 구성 지침을 먼저 확인하고 수동으로 수행할 수 있는 옵션이 제공됩니다.

데이터 흐름 분석을 지원하는 디버거

PHP 애플리케이션 디버그를 위해 Xdebug를 자주 활용하는 사용자는 데이터 흐름 분석(DFA) 지원 디버거라는 고급 기능을 사용할 수 있습니다. 이 기능을 사용하면 디버거로 코드를 단계별로 살펴보지 않아도, 실행되지 않는 코드 브랜치를 미리 확인할 수 있습니다.

PhpStorm은 코드가 실행되기 전 사전 계산된 조건의 결과를 오른쪽 인레이에 표시합니다. 따라서 자세히 살펴보지 않아도 코드를 파악할 수 있습니다. 디버그 세션 중 실행되지 않는 브랜치는 회색으로 표시됩니다.

디버그 중 DFA 비활성화

디버그 중 추가 정보가 불필요한 경우, 미리 계산된 값의 인레이를 마우스 오른쪽 버튼으로 클릭하고 현재 디버그 세션에서 DFA 기능을 비활성화할 수 있습니다.

이 기능을 비활성화된 상태로 유지하려면 Preferences(환경 설정)/Settings(설정) | PHP | Debug(디버그) | Xdebug에서 설정하면 됩니다.

제한 사항

현재 PhpStorm에서는 기술적 제한으로 인해 프로퍼티 값이 미리 계산되지 않습니다. 이 부분은 향후 개발될 예정입니다.

모든 PHPStan 및 Psalm 태그 지원

PhpStorm에서 기존의 모든 PHPStan 및 Psalm 태그가 올바르게 분석됩니다. 따라서 어노테이션이 여러 개 추가된 코드를 더 쉽게 읽을 수 있습니다.

여러 composer와 vendor를 사용하는 프로젝트 지원

이전에는 PhpStorm에서 열려 있는 모든 프로젝트가 하나의 공간으로 취급되었습니다. 하지만 고유한 composer.json 종속성이 있는 여러 애플리케이션이 동일한 프로젝트에 포함된 경우가 점점 더 증가하고 있습니다.

여러 composer.json 파일 및 vendor 디렉터리를 사용하여 이와 같은 프로젝트를 지원할 기반을 구현했습니다. 개선 사항은 다음과 같습니다.

  • 제외된 디렉터리가 올바르게 설정됩니다. 따라서 분석 및 검사 실행 횟수가 감소하므로 전반적 성능이 향상됩니다. 또한 다중 해결 시 안정성이 개선됩니다.
  • PSR 루트가 올바르게 탐지됩니다. 프로젝트의 애플리케이션 사이에서 클래스를 드래그앤드롭할 때 Move Class(클래스 이동)와 같은 리팩터링이 제대로 작동합니다.
  • composer.json에서 누락된 확장 모듈이 애플리케이션별로 올바르게 보고됩니다.

새로운 검사 기능

사용자 지정 정규식 기반 검색 및 바꾸기 검사

정규식을 사용하여 고유한 검색 및 바꾸기 검사를 생성할 수 있습니다. 이러한 검사는 스타일 및 서식 문제 또는 간단한 코드 관련 문제를 강조 표시하는 데 특히 유용합니다.

Settings(설정)/Preferences(환경 설정) | Editor(에디터) | Inspections(검사)에서 + 아이콘을 누르세요. 목록에서 Add RegExp Search Inspection(정규식 검색 검사 추가)(또는 Replace(바꾸기)) 옵션을 선택하면 새 검사를 설정할 수 있는 대화상자가 표시됩니다.

타입 계층 구조 검사가 포함될 수 있는 고급 검사로서, Structural Search and Replace(SSR, 구조 검색 및 바꾸기) 검사를 사용할 수 있습니다. Learn more about them in the docs, or check out the example in the video.

기본 제공 PHP 검사

모든 PhpStorm 릴리스에는 별도 설정 없이 사용 가능한 새로운 검사가 제공됩니다. PhpStorm 2023.1도 마찬가지로 다음과 같은 주요 검사를 지원합니다.

메서드 재정의/@final로 표시된 클래스 확장

final 키워드로 클래스를 표시하면 위반 시 치명적인 오류가 발생할 수 있습니다. 이보다 조심스러운 방식은 PHPDoc 태그인 @final을 추가하는 것입니다.

이 경우 PhpStorm에서 잘못된 상속이 강조 표시되지만 실행 중 코드 오류가 발생하지 않습니다.

호환되지 않는 반환 타입

PhpStorm 2023.1의 새로운 빠른 수정을 통해 하위 클래스의 메서드에 호환되는 반환 타입을 추가하거나 호환되지 않는 경우 변경할 수 있습니다.

어설션은 assertTrue/assertFalse로 바꿀 수 있습니다.

중첩된 배열 액세스 또는 객체의 isset()의 여러 인스턴스를 하나의 인스턴스로 바꿀 수 있습니다.

다른 파일에서 액세스된 변수에 global을 추가합니다.

삶의 질을 높이는 PHP 개선 사항

터미널의 var_dump()/dd() 출력에 대한 클릭 가능한 경로 및 클래스 참조

'덤프 앤드 다이'(Dump and Die) 방식을 선호하는 사용자를 위해 디버그 환경을 개선하려 합니다. 첫 단계로, 파일 경로와 클래스 참조를 활성화했습니다. 클릭하면 에디터에서 해당 파일이 열립니다.

코드 완성 팝업에서 파일 열기 모드에 대한 설명 제공

이전 PhpStorm 릴리스에는 date-time 함수의 다양한 형식에 대한 설명이 추가되었습니다.

이제 파일 모드를 허용하는 모든 함수에서 코드 완성 드롭다운에 자세한 설명이 표시됩니다. r+, aw의 의미를 외울 필요가 없습니다.

추가 라이브 템플릿

함수 템플릿용 fun 및 색인 생성된 루프용 fori를 포함하여 추가 라이브 템플릿이 도입되었습니다.

사용자 경험

전체 IDE 확대/축소

PhpStorm을 확대 및 축소하여 모든 UI 요소의 크기를 한 번에 늘리거나 줄일 수 있습니다. 메인 메뉴에서 View(보기) | Appearance(모양)를 선택하고 IDE의 배율을 조정하면 됩니다.

이 기능은 데모, 라이브 스트리밍, 온라인 회의 또는 프레젠테이션 시 유용할 수 있습니다.

액션에 단축키를 추가하면 더 쉽게 액션을 호출할 수 있습니다. Search Actions(액션 검색)(Ctrl+Shift+A) 창에서 'zoom ide'를 입력하고, Alt+Enter를 누른 후 단축키를 지정하면 됩니다.

여러 도구 창 레이아웃 저장 옵션

여러 도구 창 레이아웃을 저장 및 관리하고 필요할 때 전환할 수 있습니다. Window(창) | Layouts(레이아웃)에서 레이아웃을 저장, 업데이트, 활성화할 수 있는 새로운 액션을 확인해 보세요.

새로운 Remember size for each tool window(각 도구 창 크기 기억) 설정

새로운 Remember size for each tool(각 도구 창의 크기 기억) 체크박스는 Settings(설정)/Preferences(환경 설정) | Appearance & Behavior(모양 및 동작) | Tool Windows(도구 창)에서 설정할 수 있습니다. 이 옵션을 통해 사이드 도구 창의 너비를 통일하거나 레이아웃을 사용자 지정하여 크기를 조정할 수 있습니다.

에디터

Markdown 파일의 Fill Paragraph(단락 채우기)

Markdown 파일에서 Fill Paragraph(단락 채우기) 에디터 액션이 지원되므로 긴 텍스트 조각을 균일한 길이의 줄로 나눌 수 있습니다.

이 기능을 사용하려면 변경할 단락에 캐럿을 놓고 Edit(편집) 메뉴에서 액션을 선택하면 됩니다. 또는 Find Action(액션 찾기)(Ctrl+Shift+A)을 사용해 Fill Paragraph(단락 채우기) 명령어를 검색한 후 실행할 수도 있습니다.

Markdown용 새로운 Smart Keys(스마트 키) 설정 페이지

Settings(설정)/Preferences(환경 설정) | Editor(에디터) | General(일반) | Smart Keys(스마트 키)에 Markdown 환경 설정을 설정하고 변경할 수 있는 페이지를 추가했습니다.

이 페이지에는 다양한 에디터 기능별로 별도의 체크박스가 제공되므로, 환경 설정을 간편하게 관리할 수 있습니다. 이전에는 Settings/Preferences | Languages & Frameworks(언어 및 프레임워크)에 체크박스 1개만 제공되었습니다.

선택한 코드에서만 공백을 표시하는 옵션

Settings(설정)/Preferences(환경 설정) | Editor(에디터) | General(일반) | Appearance(모양) | Show Whitespaces(공백 표시)Selection(선택) 체크박스가 새롭게 추가되었습니다. 해당 체크박스를 누르면 코드를 선택한 경우에만 공백이 작은 점으로 표시됩니다.

VCS/Git/GitHub

Structure(구조) 도구 창의 VCS 상태 색상 힌트

Structure(구조) 도구 창에 변경 사항 관련 색상 힌트가 추가되었습니다.

즉, 이제 변경 또는 추가된 프로퍼티, 메서드 및 함수를 확인할 수 있습니다.

브랜치 팝업 개선 사항

이제 확장 가능한 목록에 브랜치가 저장되므로 브랜치 사이를 더 쉽게 이동할 수 있습니다.

Create New Branch(새 브랜치 생성) 팝업의 자동 완성

PhpStorm 2023.1 첫 EAP의 Create New Branch(새 브랜치 생성) 팝업에 자동 완성 기능이 구현되었습니다. 새 브랜치 이름을 입력기 시작하면 IDE에서 기존 로컬 브랜치의 이름을 기반으로 적절한 접두사를 제안합니다.

백그라운드 커밋 검사

Git 및 Mercurial에 대한 커밋 확인이 커밋 후 푸시 전에 백그라운드에서 수행되어 커밋 프로세스의 속도가 개선되었습니다.

GitHub 코드 검토 워크플로 개선

연구 결과 풀 리퀘스트를 사용하는 가장 일반적인 시나리오는 사용자가 먼저 GitHub에 방문한 후, 코드를 상세히 살펴봐야 하는 경우 IDE를 참조하는 것으로 나타났습니다.

그래서 이 워크플로를 더 간편하게 사용할 수 있도록 Pull Request(풀 리퀘스트) 도구 창을 개선했습니다. 이제 풀 리퀘스트를 열 때마다 전용 탭이 있으며, 여기에 변경된 파일 목록이 즉시 표시됩니다. 이전보다 더 적은 정보가 표시되므로 현재 작업에 더 집중할 수 있습니다.

또한 풀 리퀘스트의 현재 상태에 따라 가장 중요한 것으로 생각되는 액션을 간편하게 실행할 수 있는 전용 버튼도 있습니다.

Docker 개선 사항

모든 Docker-compose 컨테이너의 로그 병합

Docker-compose 노드의 Dashboard(대시보드) 탭은 이제 모든 Docker-compose 컨테이너의 로그를 병합하여 모두 한 곳에 표시합니다. 또한 로그가 실시간으로 업데이트됩니다.

Azure Container Registry 지원

이제 Azure Container Registry에 간편하게 연결할 수 있습니다. Preferences(환경 설정)/Settings(설정) | Build, Execution, Deployment(빌드, 실행, 배포) | Docker | Docker Registry(Docker 레지스트리)에서 Registry(레지스트리) 입력 필드의 Docker V2 옵션을 선택하여 설정하면 됩니다.

SELinux에서 바인드 볼륨에 :z 마운트 옵션을 적용하는 새로운 설정

이제 :z 구성 플래그를 Docker 바인드 마운트에 추가하여 SELinux 워크스테이션의 Docker 컨테이너에 볼륨을 연결할 수 있습니다.

이 기능을 활성화하려면 Preferences(환경 설정)/Settings(설정) | Advanced Settings(고급 설정) | Docker로 이동하세요.

Astro 지원

Long-awaited Astro support has landed in PhpStorm! 새로운 Astro 플러그인Preferences(환경 설정)/Settings(설정) | Plugins(플러그인)에서 설치할 수 있습니다. 이 플러그인은 구문 강조 표시, 자동 가져오기를 통한 코드 완성, 리팩터링, 탐색, 올바른 서식 지정 등의 기본 기능을 제공합니다.

Vue 템플릿에 TypeScript 지원

Vue 템플릿에 TypeScript 지원이 추가되었습니다. script 태그의 lang 속성을 ts로 설정하여 TypeScript를 활성화할 수 있습니다. 이전에는 script 태그의 lang 속성과 무관하게 JavaScript가 사용되었으나 이제 Vue 단일 파일 구성 요소 템플릿의 빠른 문서에서 인라인 형 변환, 타입 좁히기 개선 사항 및 추론된 타입에 대한 올바른 정보를 지원합니다.

Tailwind CSS 구성

이번 릴리스에는 classAttributes 옵션의 사용자 지정 클래스 이름 완성 또는 tailwindCSS.experimental.configFile과 같은 실험적 옵션에 대한 구성 옵션 지원이 추가되었습니다.

해당 구성 옵션은 Preferences/Settings(환경 설정/설정) | Languages & Frameworks(언어 및 프레임워크) | Style Sheets(스타일시트) | Tailwind CSS에서 설정할 수 있습니다.


이번 릴리스의 주요 변경 사항을 소개해 드렸습니다. 실제로는 더 많은 사항이 변경되었습니다. 이번 릴리스의 개선 사항과 관련된 자세한 목록은 PhpStorm 블로그의 공지사항을 참조하세요.