PhpStorm 2019.3 출시: 완벽한 PHP 7.4 지원, PSR-12, WSL, MongoDB 및 기타 다양한 업데이트

PhpStorm 2019.3이 출시되었습니다!

PhpStorm 2019.3가 출시되었습니다

이번 주요 릴리스에서는 성능과 품질에 중점을 두어 더 안정적이고 빠른 IDE를 기대하실 수 있습니다. 또한 완벽한 PHP 7.4 지원, PSR-12 코드 스타일, 원격 인터프리터용 WSL, MongoDB 지원, HTTP 클라이언트 업데이트 및 다양한 사용 편의성 향상을 제공합니다!


PhpStorm 2019.3 다운로드

이 블로그 게시물에서는 새 버전에 대해 알아야 할 모든 변경 내용에 관한 자세한 개요를 제공합니다. 여기에는 지난 몇달 동안 JetBrains의 영문 블로그에 게시한 모든 EAP 블로그 게시물과 아직 다루지 않은 기타 유용한 추가 기능에 관한 내용이 담겨 있습니다. 아주 많은 GIF가 포함되어 있습니다.

성능과 품질

JetBrains는 모든 릴리스에서 성능과 품질 개선에 상당한 시간을 투자하고 있습니다. 이번 릴리스에서는 여기에서 더 나아가 본격적으로 장기적 품질 향상을 시작했습니다. 이 기간 동안 전체 IntelliJ 플랫폼 팀은 IDE를 갈고 닦아 성능을 개선하는 데 집중했습니다. 그리고 다음과 같은 성과를 얻었습니다.

  • IDE 시작 시간 단축
  • 향상된 UI 반응 속도
  • 감소된 메모리 소비

여러분이 사용 중인 플랫폼에 따라 IDE 로딩 속도가 훨씬 빨라진 것을 확인하실 수 있을 겁니다. 이는 순차적으로 실행되던 일부 프로세스를 병렬화하고, 초기 클래스 로드를 더 빠르게 하도록 클래스를 재편하는 등 다양한 작업을 수행한 덕분입니다.

UI 멈춤 현상으로 1,600건이 넘는 리포트를 불러온 수많은 문제도 해결했습니다.

버전 관리 하위 시스템도 성능이 최적화되었습니다. 이벤트 처리 및 예외된 파일 처리가 개선되고, 대형 프로젝트에서의 멈춤 현상이 적어지고, 상태 업데이트가 더 빨라졌습니다.

이러한 작업은 계속해서 수행할 계획이므로 향후 몇몇 릴리스에서 훨씬 더 빨라진 시작 시간과 더 많은 최적화를 기대하셔도 좋습니다.

PHP 7.4

PHP 7.4가 출시되었습니다! 이 새로운 버전에는 아주 멋진 수많은 기능들이 준비되어 있습니다. 새로운 기능을 확인해 보세요. 모두 PhpStorm 2019.3에서 지원됩니다.

타입 지정된 속성

이 기능은 PHP 7.4에서 가장 기대되는 항목일 것입니다. PhpStorm은 2019.2부터 지원해 왔습니다. 이번 릴리스에서는 이 기능의 몇가지 문제를 해결하고 일부 코너 케이스를 다루고 있으므로 다시 한 번 살펴보겠습니다.
우선 PhpStorm은 타입 위반을 강조 표시합니다.

PHP74_typed_properties_inspection

여러분은 분명 속성에 대한 타입 선언을 빠르게 추가하고 싶으실 겁니다. PhpStorm은 PHPDoc, 기본값을 기반으로 기존 값의 타입을 탐지하거나 생성자에 값을 삽입할 때 정의된 타입이 있는 경우 이를 탐지하기 때문에 선언은 매우 빠르게 추가됩니다.
타입이 없는 속성에서는 alt-enter Alt-Enter를 입력한 다음 Add declared type for the field(필드에 대해 선언된 타입 추가)를 선택하면 완료됩니다.

php74_typed_properties_quickfix

애로우 함수 (Arrow Functions)

본문에 단일 구문을 가진 익명의 함수가 있는 경우 PHP 7.4에서는 이를 짧은 애로우 함수로 다음과 같이 변환할 수 있습니다. fn(parameter_list) => expr

arrow-functions

또한 외부 범위 변수가 값별로 자동 바인딩되므로 use 섹션을 작성할 필요가 없습니다.

arrow-functions-scope

익명의 함수 위에서 alt-enter Alt+Enter를 눌러 Convert closure to arrow function(클로저를 애로우 함수로 변환) 옵션을 사용하세요.

arrow_functions_quick-fix

숫자 리터럴 구분 기호

숫자 아무 곳에나 밑줄 기호를 추가하여 시각적으로 숫자의 서식을 지정할 수 있습니다. 임의의 숫자 위에서 alt-enter Alt+Enter를 누르고 Add number separators(숫자 구분 기호 추가)를 적용하세요. 이렇게 하면 10진수의 세 번째 숫자마다, 또는 2진수, 8진수, 16진수의 네 번째 숫자마다 ‘_‘ 밑줄이 추가됩니다.

php74_numeric_literals_quickfix_blog

중첩된 Ternary 연산자

거의 모든 프로그래밍 언어는 삼항(ternary) 연산자를 오른쪽에서 왼쪽으로 계산합니다. 그러나 PHP는 이를 다르게 수행하여 직관적이지 않고 실수로 이어질 수 있습니다. 이제 PHP 7.4는 왼쪽 결합을 사용하지 않습니다. 즉, 중첩된 Ternary 연산자를 사용하지 말아야 하며, 필요한 경우 괄호를 사용하여 계산 순서를 명시적으로 선언해야 합니다.

PhpStorm 2019.3은 더 이상 사용되지 않는 표현식을 강조 표시하므로 사용자는 빠른 수정(Alt+Enter – 다들 알고 계시죠?)을 사용하여 동작을 명확하게 지정할 수 있습니다.

php74_nested ternaries

새로운 직렬화(Serialization) 메커니즘

기존 직렬화와 관련된 문제는 해결할 수 없었기 때문에 PHP 코어 팀은 두 가지 새로운 마법 같은 메소드인 __serialize()__unserialize().를 도입하기로 결정했습니다. PhpStorm은 코드에서 해당 메소드의 사용 위치를 찾을 수 있도록 도와줍니다.

php74_serialization

공변성 반환 및 반공변성 매개변수

PHP 7.4는 타입 시스템과 관련된 불일치를 포함해 여러 불일치를 수정했습니다. 상위 클래스에서 상속된 메소드로 작업할 때 반환 유형을 더 구체적으로, 매개변수 유형은 덜 구체적으로 정의할 수 있습니다.

php74_covariant_contrvariant

중단된 기능

PHP 릴리스의 좋은 점은 새로운 기능이 추가되었을 뿐만 아니라 기존 기능이 중단되어 언어가 더 깔끔하고 작업하기 편해졌다는 것입니다. PHP 7.4 릴리스에는 많은 지원 중단이 포함되어 있습니다.

PhpStorm 2019.3은 주의가 필요한 코드를 강조 표시하고, 가능한 경우 더 이상 사용되지 않는 동작을 자동으로 빠르게 수정하는 옵션도 제공합니다.

php74_deprecations
curly_brackets

⚠️ PHP 7.4 릴리스에서는 이전 PHP 버전이 지원 중단됩니다. PHP 7.2는 향후 1년간 보안 수정만 지원됩니다. PHP 7.1은 공식적으로 지원되지 않습니다. 이에 따라 이제 취약점이 발견되면 이에 대한 해결책이 나오지 않으므로 해킹을 당할 위험도 있습니다. 그러므로 업그레이드를 하실 것을 추천드립니다.

PSR-12

이 새로운 PSR-12 표준은 오래된 PSR-2 대신하여, 몇가지 불일치를 해소한 상태로 지난 몇년간 제공되었던 모든 새로운 언어 기능에 적용됩니다. 이 멋진 업데이트를 실현한 PHP-FIG를 칭찬합니다! PSR-2를 사용하고 계시다면 PSR-12에서 변경된 사항을 확인하세요.

PhpStorm 2019.3은 사전 정의된 PSR-12 코드 스타일을 포함하며 사용자에게 이 스타일로 전환할 것을 제안합니다. Preferences(기본 설정) | Editor(에디터) | Code Style(코드 스타일) | PHP에 있는 Set from…(다음에서 설정) 액션으로 직접 전환할 수도 있습니다.

psr-12-set-from

일부 PSR-12 규칙은 기본적으로 비활성화된 검사로 추가되지만 사용자가 PSR-12 코드 스타일을 선택할 때 PhpStorm에서 이 검사를 사용하도록 제안합니다. PHP | Code Style(코드 스타일) | PSR-12에서 Preferences(기본 설정) | Editor(에디터) | Inspections(검사)에 있는 검사를 원하는 대로 조정할 수 있습니다.

psr-12-inspections

그런 다음 Cmd/Ctrl+Alt+L을 눌러 에디터에서 코드 서식을 다시 지정할 수 있습니다.

PSR-12_reformat

또는 커밋하기 전에 정리 단계에서 PhpStorm이 이 검사를 자동으로 실행하도록 설정할 수 있습니다.

psr-12-before-commit

WSL

PhpStorm은 이제 WSL(Linux용 Windows 하위 시스템)에서 개발할 수 있도록 지원합니다. WSL 환경에서의 개발은 Windows 10 시스템에서 IDE를 시작하지만 WSL/Linux를 대상으로 개발하는 것을 말합니다. 사용자는 WSL에서 원격 PHP 인터프리터를 지정하고 이를 사용해 스크립트, 테스트, Composer 명령어를 실행하고 디버그할 수 있습니다.

  • 시작하려면 Windows 10 시스템 및 선택한 Linux 배포판에 WSL을 설치했는지 확인하세요. 설치 가이드 참조
  • 사용 중인 배포판에 따라 PHP가 사전 설치되어 있을 수 있습니다. 그렇지 않은 경우 명령줄을 통해 수동으로 설치해야 합니다. 예를 들어 Ubuntu에서는 다음과 같이 실행할 수 있습니다.
    sudo apt update
    sudo apt install php php-mbstring php-dom php-xml php-zip php-curl php-xdebug
  • WSL 환경에 PHP가 있으면 PhpStorm을 설정할 준비가 되었습니다.
  • File(파일) | Settings(설정) | Languages & Frameworks(언어 및 프레임워크) | PHP에서 CLI 인터프리터를 추가하세요.

wsl_add_interpreter

그러면 끝입니다! 이제 테스트, Composer 또는 기타 사용 중인 실행 구성에 이 인터프리터를 지정할 수 있습니다.

PHPDoc 개선 사항

기존에 PhpStorm에서는 PHPDoc에서 FQN 및 링크를 해결했지만 전체 블록이 단일 색상으로 표시되고 일반 주석처럼 스타일이 지정되었습니다.
PhpStorm 2019.3에서는 doc 블록에서 모든 타입, 변수, 매개변수, 메소드, 속성이 완벽하게 강조 표시됩니다. 주석에 HTML이 있는 경우 HTML도 강조 표시됩니다.

phpdoc-improvements

Markdown 및 문자열에서의 PHP 강조 표시

문자열 리터럴 내부에서 PHP를 사용해야 할 때가 있습니다. 이때 PHP가 eval()에 들어가지 않으면 좋겠지만 그렇지 않죠. 혹은 Markdown 파일의 코드 블록에서 PHP 강조 표시를 원할 때도 있을 겁니다.

PhpStorm 2019.3에서는 InjectablePHP라는 특별한 PHP 파생 언어 덕분에 이 모든 바람을 실현할 수 있습니다. 이 파생 언어는 PHP와 유사하게 작동하지만 여는 태그를 생략할 수 있습니다.
여는 태그는 php에 해당하는 정보 문자열과 함께 Markdown 내부에 자동으로 삽입됩니다.

php_injectable

PHP 마커가 있는 Heredoc/Nowdoc 문자열은 다음과 같이 표시됩니다.

injectable_php_nowdoc

eval() 호출에서도 마찬가지로 표시됩니다.

Injectable_php-eval

소소하지만 편리한 개선 사항

조건에 대한 빠른 수정

if-else 조건문은 아마 언어에서 가장 많이 사용되는 구문일 것입니다. PhpStorm 2019.3에는 조건을 조작하기 위한 우수하고 빠른 액션이 몇가지 추가되었습니다.

if 구문에 값 대입이 있는 경우, PhpStorm은 alt-enter Alt+Enter를 눌러 해당 값 대입을 변수로 추출할 것을 제안합니다.

if-assignment-extract

중첩된 if 조건이 있는 경우, alt-enter Alt+Enter를 눌러 하나의 조건으로 빠르게 병합할 수 있습니다.

if-merge-conditions

if가 따라오는 else 구문은 단일한 elseif로 병합할 수 있습니다.

else-if-merge

반대로 elseifelseif로 분리할 수도 있습니다.

elseif-split

상수 인라인화 리팩토링

이 리팩토링은 Extract constant(상수 추출)과 반대되는 작업을 하며 상수의 사용 위치를 값으로 대체합니다. 상수에서 Cmd/Ctrl+Alt+N을 누르세요.

inline_const_refactoring

Cmd/Ctrl+T를 누르면 더 많은 리팩토링이 표시됩니다.

함수 인수 래핑 해제(함수 호출 삭제)

Shift+Cmd/Ctrl+Delete를 누르면 중복 함수 호출이 삭제됩니다.

unwrap_function

<?만 입력되었을 때 <?php를 자동 삽입

최근 RFC 투표가 통과되지 않았기 때문에 생략 태그는 최소 향후 몇년 동안 PHP의 일부로 남아 있을 것입니다. 하지만 PhpStorm은 사용자가 <?를 입력하는 즉시 자동으로 <?php를 입력하기 때문에 생략 태그가 지원 중단되어도 문제가 없습니다.

php-no-short-tag

배열 키 다음에 오는 ‘=’를 ‘=>’로 자동 완성

2019.3에 포함된 또 다른 작은 시간 절약 기능이 있습니다. 배열에 항목을 추가할 때 키를 입력한 다음 =>를 입력하여 값을 지정하려는 경우, 간단히 =를 누르면 PhpStorm이 자동으로 =>를 삽입합니다.

array-quick-typing

PHP 테스트 실행 구성을 위한 인터프리터 지정

이전에 PhpStorm에서 원격 PHP 인터프리터로 테스트를 실행하려면 별도의 실행 구성을 생성해야 했습니다. PhpStorm 2019.3에서는 모든 PHP 실행 구성에 인터프리터 옵션이 추가되어 테스트를 실행해야 하는 인터프리터를 무엇이든 선택할 수 있습니다. Docker, Vagrant 또는 기타 원격 인터프리터를 자유롭게 사용하세요.

run-config_specify_interpreter

$this 변수의 글꼴과 색상

this-color-and-fonts

HTTP 클라이언트

에디터 도구 모음

.http.rest 파일을 열 때마다 일반 액션에 빠르게 액세스할 수 있는 도구 모음이 생겼습니다.

http-client_toolbar

하나의 파일에서 모든 요청 실행

PhpStorm의 에디터 기반 HTTP 클라이언트를 사용하면 여러 요청을 하나의 .http 파일에서 ###으로 분리하여 작성할 수 있습니다. 이 기능은 이전 요청의 결과에 따라 요청이 달라지는 요청 체인을 수행해야 하는 경우 매우 편리합니다.

예전에는 요청을 하나씩 실행해야 했지만 PhpStorm 2019.3부터는 모든 요청을 동시에 실행할 수 있습니다.

http-client_run_all

요청 접기

여러 부분으로 구성된 양식 데이터 또는 여러 개의 헤더 등 본문이 긴 요청을 전송하는 경우, 에디터에서 요청을 접어 깔끔하게 표시할 수 있습니다.
다음과 같이 첫 번째 줄 또는 본문 부분만 남기고 전체 요청을 접을 수 있습니다.

http-client_folding_requests

호스트 이름 완성

새 요청을 작성할 때 이전에 사용한 호스트 이름을 입력할 필요가 없습니다. PhpStorm이 제안 목록에서 호스트 이름 목록을 제공합니다.

http-client-host-completion

동적 변수

요청에서 어디에든 사용할 수 있는 세 가지 동적 변수가 추가되었습니다.

  • $uuid – 새로운 UUID-v4(e9e87c05-82eb-4522-bc47-f0fcfdde4cab) 생성
  • $timestamp – 현재 Unix 타임스탬프(1563362218)
  • $randomInt – 0과 1000 사이의 임의의 정수

필요한 경우 이중 중괄호를 사용하여 이러한 변수 중 하나를 삽입하세요.
GET http://httpbin.org/anything?id={{$uuid}}&ts={{$timestamp}}

http-client-dynamic-variables

다음 동영상에서 소개하는 개요를 통해 알아야 할 모든 필수 내용을 확인하세요.
video PhpStorm의 HTTP 클라이언트

버전 관리

새롭게 설계된 프로젝트 복제 UI

이제 이 대화상자에서 GitHub에 로그인할 수 있으며, 이미 로그인한 경우 계정 또는 조직별로 그룹화된 모든 저장소 목록이 IDE에서 즉시 미리보기로 표시됩니다.

vcs_new_get_from_ui

체크아웃

Checkout as(다음으로 체크아웃) 액션을 없애고 그 대신 2개의 새로운 액션인 New Branch from Selected(선택 항목에서 새 브랜치 생성)Checkout(체크아웃)으로 분리했습니다. 새로운 New Branch from Selected 액션은 새로운 브랜치를 생성하고, 추적을 설정하지 않습니다. Checkout 액션은 자동으로 새로운 로컬 브랜치를 생성하고, 체크아웃하며, 이름이 같은 로컬 브랜치가 없을 경우 선택된 원격 브랜치의 추적을 설정합니다.

모든 브랜치의 변경 내용 푸시

이제 브랜치의 변경 내용을 해당 브랜치로 전환하지 않아도 푸시할 수 있습니다. VCS | Branches(브랜치) 팝업에서 브랜치를 선택한 다음, 메뉴에서 Push(푸시) 액션을 사용하세요.

vcs_push_to_any_branch

날짜 형식 사용자 지정

VCS Annotate 및 VCS Log 액션의 날짜 형식을 구성할 수 있습니다. 예를 들어 미국 형식을 사용하려는 경우 mm/dd/yyyy로 설정하면 됩니다.

vcs-date-formats

IDE

향상된 플러그인 관리 기능

PhpStorm에는 기능을 확장하고 디자인을 사용자 지정하기 위해 설치할 수 있는 우수한 플러그인이 많습니다. 그러나 플러그인을 관리하려면 매번 IDE를 다시 시작해야 했기 때문에 다소 번거로웠죠. PhpStorm 2019.3에서는 동적 플러그인 설치를 지원하는 핵심 기반 인프라를 구현하여 이 문제를 해결했습니다. 즉, 이제 IDE를 다시 시작하지 않고 플러그인을 로드 및 언로드할 수 있습니다. 이 기능은 현재 테마 및 단축키 플러그인에 대해 활성화되어 있습니다. 향후 릴리스에서는 대부분의 플러그인으로 확장할 계획입니다.

명암대비 스크롤바

이제 Preferences(기본 설정)/Settings(설정) | Appearance & Behavior(꾸미기 및 동작) | Appearance(꾸미기)의 “Use contrast scrollbars”(명암대비 스크롤바 사용) 체크박스를 통해 스크롤바의 가시성이 더욱 개선되었습니다.

부드러운 마우스 스크롤

Smooth scrolling(부드러운 스크롤) 옵션을 Preferences(기본 설정)/Settings(설정) | Appearance & Behavior(꾸미기 및 동작) | Appearance(꾸미기)에서 활성화하면 마우스 휠이나 터치패드를 사용할 때 전체 인터페이스가 한 줄씩 끊어지지 않고 부드럽게 스크롤됩니다.

선택한 텍스트에서만 검색

에디터에서 필요한 코드 조각을 선택하고 Cmd/Ctrl+F를 눌러 Find(검색) 액션을 실행하면 IDE가 선택한 영역에서만 검색합니다. 검색 영역을 확장하고 전체 파일을 검색해야 하는 경우 Cmd/Ctrl+F를 다시 누르거나 도구 모음에서 In Selection(선택 범위 내) 옵션을 끄세요.

find-in-selection

줄을 알파벳순으로 정렬하는 새로운 에디터 명령어

이제 에디터에서 줄을 선택하고 메인 메뉴에서 Edit(편집) | Sort Lines(줄 정렬)를 선택하거나 Cmd/Ctrl+Shift+A를 눌러 Find Actions(액션 검색)에서 이 액션을 실행해 줄을 알파벳순으로 쉽게 정렬할 수 있습니다.

sort-lines

웹 기술

WebStorm 2019.3의 새로운 기능 페이지에서 WebStorm 팀 동료가 만든 모든 변경 내용을 확인해 보세요. 거기에 언급된 모든 내용은 PhpStorm 2019.3에도 포함되어 있습니다.

데이터베이스 도구

MongoDB 지원

JetBrains에서 MongoDB 지원 작업을 드디어 시작했습니다.
이번 버전에서 실제로 작동하는 기능은 다음과 같습니다.

인트로스펙션(Introspection)
데이터베이스 탐색기에서 컬렉션 및 필드를 확인할 수 있습니다. 필드에 대한 정보는 각 컬렉션에서 처음 10개의 문서를 가져와서 얻습니다. 이는 데이터 소스 속성 대화상자의 Advanced(고급) 탭에서 사용 가능한 JDBC 매개변수 fetch_documents_for_metainfo를 통해 사용자 지정할 수 있습니다.

mongodb_observer

데이터 뷰어
컬렉션을 열거나 쿼리 결과를 확인하면 열별로 정렬하거나 값을 필터링하는 옵션을 이용할 수 있으며 페이징 기능도 작동합니다.
데이터를 트리로 탐색할 수도 있습니다. 이 뷰를 켜려면 톱니바퀴 아이콘 | View as…(다음으로 표시) | Tree(트리)를 클릭하세요.

mongodb_tree_view

쿼리 콘솔
현재 코딩 지원 기능은 없지만 그렇다고 쿼리를 실행하고 결과를 다시 얻지 못하는 것은 아닙니다. 구문을 실행하려면 그 위에 캐럿을 올려놓은 후 Cmd/Ctrl+Enter를 누르거나 도구 모음의 재생 버튼을 사용하여 실행하세요.

mongodb-run-query

PhpStorm에는 DataGrip의 모든 기능이 기본적으로 포함되므로 DB 도구에서 그 밖의 다양한 새로운 기능을 발견할 수 있습니다. DataGrip 2019.3 릴리스에 관한 자세한 개요를 기다려 주세요.


이번 릴리스의 모든 변경 내용에 관한 전체 목록은 매우 긴 릴리스 노트에서 확인하실 수 있습니다.

긴 글을 끝까지 읽어 주셔서 감사합니다! 질문, 제안 사항, 버그 보고, 의견이 있으신 경우 댓글을 남겨 주세요.

JetBrains PhpStorm 팀
The Drive to Develop

본문은 PhpStorm 2019.3 Released: Full PHP 7.4 Support, PSR-12, WSL, MongoDB, and More를 번역한 글입니다.

Discover more