티스토리 뷰

PHP

[ PHP ] Modern PHP 란?

권윤학 2017. 10. 7. 21:22


프로그래밍 언어를 공부하다보면 Modern이라는 키워드가 자주 등장합니다. 사전적인 의미로 현대적인 라는 의미로 최신이라는 의미가 내포되어 있습니다. 현대적인 라는 말은 과거 / 현재의 비교가 필요합니다. 즉 before & after가 필요하다는 얘기입니다. 그럼 현재 얘기되고 있는 Modern PHP란 무엇일까요?


이 글은 아래의 내용들을 참고하여 작성하였습니다.(피드백은 언제나 환영입니다.)


- PHP THE RIGHT WAY

- 2016 GDG Incheon 8월 전창완님 발표자료

- Modern PHP(도서)

- ModernPUG wiki - 모던의 의미



PHP의 과거와 현재

앞서 Modern이라는 용어를 얘기하기 위해서는 과거와 현재가 비교되어야 한다고 했었습니다.

그래서 아주 간단하게 PHP의 변화에 대하여 간단하게 알아보겠습니다.



PHP 업데이트 날짜 및 주요 변경사항과 프레임워크들에 대한 TimeLine입니다. (틀린사항이 있으면 피드백 언제든지 환영합니다.)


PHP는 20년 가까이 많은변화를 겪었으며, 각각 큰변화들이였지만 TimeLine에서 보면 PHP 5.4가 출시되는 2012년부터 본격적으로 활발한 변화가 생겼습니다. HHVM 의 등장  / composer의 추가 / 표준권고 추가(PSR) 등이 PHP를 더욱 빠르게 변화시켰습니다.


PHP의 문제로 얘기되던 성능은 HHVM / HACK 같은 경쟁상대의 등장으로 개선되었으며, composer의 등장으로 컴포넌트 기반으로 작업이 가능해졌습니다. 표준이 없어 각자의 스타일대로 작성되던 코드들이 호환성있고 읽기 쉬워진 코드들로 변화하였습니다.


또한 기존의 PHP가 코드 결과를 예측하기 어려웠던 점을 타입힌팅(Type Hinting)의 강화로 엄격한 코드를 작성하여 예측하기 쉽고 리팩토링이 편한 코드를 작성 할 수 있게 되었습니다.

Modern PHP의 조건

이러한 내용들을 봤을때 저는 Modern PHP를 지향하기 위해서는 아래의 조건들이 성립해야한다고 생각합니다.


- 최신버전의 PHP

- PSR(표준권고) 준수

- 패키지 매니저

최신버전의 PHP



위의 사진은 PHP의 버전별로 지원 그래프입니다. 주황색으로 표기된 영역은 보안 지원기간입니다.


5.6까지는 보안지원에 포함되어있습니다. 되도록이면 5.6 미만의 PHP를 사용하고 계시다면 5.6까지는 버전업을 하시는게 좋을 듯 합니다.

버전만 올려도 속도가 빠르다고 하니 공식문서를 통해서 버전 마이그레이션하시길 바랍니다.

PSR(PHP Standards Recommendations) PHP 표준 권고사항 준수


PSR은 PHP-FIG(PHP Framework Interop Group)에서 재정하는 표준권고 사항으로 PSR-1, PSR-2 같은 코딩 스타일 가이드 부터 PSR-3, PSR-6, PSR-7 같은 기능별 인터페이스 그리고 PSR-4 같은 오토로딩 같은 내용까지 포함하고 있습니다. PSR-1, PSR-2의 경우 IDE에서 코드를 검사하여 코딩 스타일을 통일감있게 만들어주며 PSR-4는 composer를 이용할때 이용됩니다.


PSR에 대한 자세한 내용은 제 블로그에 있는 글PHP-FIG 사이트 그리고  PHP THE RIGHT WAY에서 확인이 가능합니다.

패키지매니저(composer)


패키지 매니저는 소프트웨어의 버전 및 의존성을 관리해 주고 설치 / 업데이트 / 삭제 등을 쉽게 해주는 시스템을 말합니다. PHP에는 Composer라는 패키지 매니저가 있으며, 다른언어 들도 다음과 같은 패키지 매니저들이 존재합니다. 


- node(NPM, YARN)

- ruby(Gem)

- C#(NuGet)

- java(Jpm)

- python(pip)


패키지 매니저를 이용하면 다른사람이 작성한 코드를 쉽게 갔다 쓸 수 있으며, 이 패키지들의 버전 및 의존성 관리도 쉬워지고 작성한 코드들을 컴퍼넌트 단위로 배포도 가능해집니다. 


Http 통신 처리를 해야한다면 guzzle를 사용하면되고 Log처리를 해야한다면 Monolog 를 사용하면 됩니다.

이걸 어디서 찾냐고요? https://packagist.org/에서 검색하여 쇼핑하듯 composer로 불러오기만 하면됩니다.


위에서 말했던 패키지들은 각각 PSR-7(HTTP message interfaces), PSR-3(Logger Interfaces)를 준수한 패키지들입니다.

PSR를 준수한 수많은 패키지들이 있으며, 저희는 가장 적합한 컴퍼넌트 혹은 프레임워크를 사용하면 됩니다.

마무리

사실 Modern PHP에 대한 해답은 PHP THE RIGHT WAY에 잘 정리 되어있다고 생각합니다. 그러나 내용도 많으며, 조금 야매적인(?) 요약이 필요하다고 생각해서 이 포스트를 작성하기 시작하였습니다. PHP가 비록 우리나라에서 안좋은 시선이 많지만, Modern PHP는 나쁘지 않다고 생각합니다. 언어라는건 결국 도구이기때문에 적합한 곳에 자기에게 맞는 도구를 사용하는게 중요하다고 생각합니다.

댓글