쉬운 PHP 코드와 좋은 PHP 코드 > 자유게시판

자유게시판

쉬운 PHP 코드와 좋은 PHP 코드 정보

쉬운 PHP 코드와 좋은 PHP 코드

본문

쉬운 PHP 코드

PHP 코드를 작성하는 것은 매우 쉽다. 예를 들면 users 테이블에서 사용자들의 정보를 불러와서 출력하는 기능을 만든다고 가정하자. 단 2줄로 데이터베이스에서 사용자 정보를 불러올 수 있고 바로 그 자리에서 출력해버릴 수 있다.

 

img.png

 

 

이런 쉬운 PHP 코드는 누구나 처음 배울 때 접하는 PHP의 얼굴이자 아픈구석이라고 생각한다. 쉽게 쓰여진 PHP 코드가 처음 배우는 사람들에게는 진입장벽을 낮추는 역할을 한다. 예제를 조금만 따라하다보면 바로 게시판을 만들고 사용할 수 있는 레벨에 쉽게 도달하게 된다. 전문적인 프로그래머가 아니어도 무엇인가 내가 원하는 기능을 만들수 있다는 성취감을 얻게 도와준다. 대체로 여기서 만족을 느끼고 발전하지 않는 PHP 사용자가 적지 않다.

MVC 패턴

한 단계 나아가면 쉬운 PHP 코드 처럼 모든 레이어가 혼재 되어 있는 패턴은 나쁘다는 이야기를 자주 듣게 된다. PHP코드와 HTML코드의 구분이 없는 패턴을 허용하는 PHP를 많은 이들이 공격을 하곤 한다. PHP의 태생적 가치 마저 비하하는 공격을 듣고 나면 내가 선택한 길이 잘못된 것인가 의심하고 이내 슬퍼지게 된다. 그래서 울면서 이것 저것 찾아보며 배우게 되는게 있는데 바로 MVC 패턴이다. 그나마 PHP 코드와 HTML 코드가 분리되어 보이고 각자 역할에 충실한 클래스를 사용하면서 재사용성과 협업이 가능한 구조에 눈을 뜨기 시작한다. 위의 예제 코드를 나름 PDO 추상화 레이어와 클래스를 활용한 MVC 패턴으로 분리한다고 가정하자.

 

img.png

 

 

흔히 말하는 MVC 패턴을 사용해서 아까 전 코드보다는 조금 더 나은 모습이다. 하지만 여전히 각자 클래스는 다른 클래스와 강한 결합을 갖고 있다. 데이터베이스 연결 없이는 할수 있는게 없고, 통합 테스트는 가능해 보이지만, 단위 테스트를 위해서는 반드시 서로 다른 클래스들이 종속적으로 작용을 해야만 하는 패턴이다. 패턴이 없는 코드에서 MVC 패턴 단계의 코드로 발전을 하면 무언가 대단해진 것 처럼 보이지만 결국 이 또한 좋은 PHP 코드가 되기 위해서는 조금 부족하다.

좋은 PHP 코드

또 한 걸음 더 나아가서 느슨한 결합의 레이어들을 활용해 단위 테스트가 가능한 좋은 PHP 코드를 작성해보자.

 

img.png

 

 

완벽히 좋은 PHP 코드라고 할 순 없지만 단위 테스트가 가능한 더 괜찮은 코드가 되었다. 느슨한 결합의 레이어들이지만 약속된 구현체가 반드시 있어야한다. 컨트롤러에게는 데이터베이스의 결과가 아니라도 getAll() 메소드 구현체가 전달 된다면 작동하게 되어 있다. 임의로 컨트롤러에게 페이크 데이터를 실은 구현체를 전달해서 테스트 할 수 있는 구조가 마련된 샘이다.

좋은 PHP 코드를 작성하는 것은 무척 어렵다. 좋은 PHP 코드란 단위 테스트 작성이 가능하고, 리팩토링이 쉽고, 재사용성이 좋고, 의존성 업그레이드가 무섭지 않아야 한다. 흔히 말하는 디자인 패턴 철학을 가진 레이어를 말한다. 위에 적은 4가지가 가능한 PHP 코드란 느슨한 결합의 레이어를 구현한 코드다. 느슨한 결합의 레이어들은 다른 레이어에 영향을 주지 않아 리팩토링이 간결해진다. 리팩토링이 간결하다면 의존성을 가진 패키지들의 업그레이드도 쉽게 도전할 수 있고 이는 지속가능한 어플리케이션의 토대가 된다. 좋은 PHP 코드를 사용하는 PHP는 생각보다 단단하며 멋진 언어이다.

쉬운 PHP 코드와 좋은 PHP 코드

나는 PHP 코드를 작성해서 대가를 지불 받는 10년 차 PHP 프로그래머다. 10년 전으로 돌아간다해도 나는 주저 없이 PHP를 선택 할 것이다. 내가 만약 JAVA를 했었다면 지금의 연봉에 이르지 못했을 거라고 단언한다. 재미가 무척 없었기 때문이다. 쉬운 PHP 코드는 너무나 쉽고 매력적인 도구이다. 쉽게 접근할 수 있다고 해서 무시 당하고 괄시 받아야 할 이유가 되지 않는다고 생각한다. 코드의 작성의 대가가 다른 언어보다 떨어질 이유도 되지 않는다고 본다. PHP는 좋은 PHP 코드도 작성할 수 있으니깐 말이다.

쉬운 PHP 코드라고 나쁘다고 공격하면 안된다고 생각한다. 쉬운 PHP 코드만 작성해 본 사람들이 결국 안티가 되어 PHP가 나쁘다고 공격을 하게 되더라. 쉬운 PHP 코드는 좋은 PHP 코드로 발전할 수 있다. 즉 좋은 PHP 코드의 반대는 나쁜 PHP 코드가 아니라 쉬운 PHP 코드이다. 쉬운 PHP 코드와 좋은 PHP 코드 둘 다 PHP이고 경우에 따라서 둘 다 사용될 수 있다. 이것은 다른언어가 갖지 못한 PHP의 특이점이자 장점이라고 생각한다.

 

--------------------------------

 

25주년의 PHP 언어가 아직도 우리나라에선 무시받는 경향이 있는 것 같아 새로 PHP를 공부하는 분들을 위해 작성해봤습니다. 결코 나쁘지 않은 선택입니다. 포기하지마세요^^ 

추천
8

베스트댓글

댓글 17개

PHP의 디버깅이 불편하다고 느끼신다면 xdebug를 사용하셔도 불편하실 겁니다. 결국 var_dump 의 결과를 편하게 출력하는 정도일 뿐입니다.

스스로 예상되는 에러와 예외를 컨트롤하는 습관을 들이시고 그 때마다 로그를 남기는 습관을 가지는 것이 좋은 디버깅 방식이라고 생각합니다.
xdebug는 한번도 사용안해 봤는데 다들 Xdebug해서..  그래서 찾았던 것이 monolog로 같은 것으로
옛날 방식으로 찍어보는 것으로..
저는 지금도 무척 만족스럽게 사용하고 있습니다. 그 보다 더 나아진다고 한다니 예상이 안될 정도네요.
이 글에 동감하시는 분들에게 '클린 아키텍처 인 PHP' 책을 추천합니다~!
https://sir.kr/cm_free/1539558
이미 추천이 되어있네요!ㅎㅎ
서버사이드 언어로 뭘 쓰느냐가 문제지 PHP 의 문제는 아니라고 보입니다.
어떤 언어를 쓰든 조직화만 잘하면 문제 없지 않나... 저는 그렇게 생각합니다. ^^
글솜씨가 엄청 좋으시네요~ 부럽구요~ 언어간 이러쿵 저러쿵은 너무 많이 들어서~ 뭐 어차피 결과물로 말하는 세상 아닌가 싶네요. 근데 왜 씁쓸하지...
예전에는 무슨무슨 패턴 아키텍쳐 등등
소프트웨어 구조를 잘 만들기 위한 다양한 방법들이 존재 했는데

저도 열심히 공부 했었구요..

지금도 이런 개발 방식이 점점 없어져 가고 있지만
향후 5년내에 이러한 이야기들은 쏙 들어갈거라 생각이 듭니다 ^^
php 초보자로서 여쭤봅니다.
4세대 html의 사용자로서 현재 트렌드에 맞춰 공부하고 적응하려 하지만 많은 부분에서 어려움을 느낍니다.
예전에는 gw-basic이랑 cobol 사용이 전부였던 터라 php 공부에 아직도 초입에서 머무는 경우가 많아요.
독학으로 기본기 익히기가 정말 어렵습니다.
어떤 패턴을 따라서 하면 도움이 될까요?
목표는 html 탬플릿을 그누보드에 접목시키는 겁니다.(기능 빼고 껍데기만요.)
쉬운PHP 덕에 메이저 언어가 될 수 있었죠.  요즘엔 특정 용도 언어 빼고는 다 평준화 되어가고 있는 느낌입니다.
전체 195,264 |RSS
자유게시판 내용 검색

회원로그인

진행중 포인트경매

  1. 참여3 회 시작24.04.19 15:40 종료24.04.26 15:40
(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT