PGR21.com
- 자유 주제로 사용할 수 있는 게시판입니다.
- 토론 게시판의 용도를 겸합니다.
Date 2019/07/24 23:11:12
Name 닭장군
Link #1 내뇌내
Subject [일반] [PHP] 옛날 php에게 곶통 받아봅시다. - 1 (수정됨)
예전에 php좋다는 글을 한번 썼었죠.
이번에도 별볼일 없는 지잡C급 php프로그래머의 독자연구 개똥철학을 풀어봅니다. 잘하시는분들에게는 전혀 쓸모없는 글일 것 같습니다.


php5는 5.6이 마지막 버전인데, 이미 PHP 재단에서 5버전은 완전히 지원을 끊었습니다. 이제 온전히 php7을 써야 합니다.

그러나 현실은 다릅니다.

오래되고 영세한 업체, 또는 잘 몰라서 외주를 잘못맡긴(!)업체는 지금도 php5.2를 사용하기도 합니다. 웹서비스 자체가 5.2를 전제로 만들어져서, 함부로 업그레이드도 못합니다.

워드프레스나 XE같은 CMS도 쓰기 어려워요.

저는 대개 이런곳은 php5.2환경과 php최신에서 모두 구동되는 코드를 이용해서 구조만 고쳐주는 방식으로 부분부분 순차적으로 리뉴얼 합니다.

아직 리뉴얼 하지 않은곳은 기존의 방식대로 .php 파일에 직접접근하게 그대로 놔두고, 새로 고친 곳만 제가 만든 구조 안에서 돌아가게 하는겁니다.
데이터베이스만 같이 쓰는 서로 다른 두 프로그램이 돌아가는거죠. 완전히 대체하기 전까지는요.

예를들어 게시판에 접근한다고 할때, 옛날 게시판은 이런식입니다.

글목록: www.사이트.com/board.list.php?table=free&page=1
글읽기: www.사이트.com/board.view.php?table=free&num=12345

반면 제가 새로 만들 게시판은 예를들면 이런식입니다. php파일에 직접접근하지 않습니다. 아마 유명 웹사이트에서 많이들 보신 형태일겁니다.

글목록: www.사이트.com/?mod=notice&cmd=list&page=1
글읽기: www.사이트.com/?mod=notice&cmd=view&id=12345

여기서 주소 재작성(rewrite)기능을 가지고 더 깔끔하게 만들 수도 있죠.

www.사이트.com/12345
이런식으로.

완전히 리뉴얼하기 전까지는, 위의 php파일이 드러나는 옛날프로그램과 아래의 php파일이 안보이는 새프로그램이 같이 돌아가는겁니다.

그럼 개념은 어떻게 잡고 갈까.
아주 보편적으로 쓰는 디자인 패턴 조합이, 프론트 컨트롤러+MVC 입니다.

1. 프론트 콘트롤러
입구를 하나만 내놓는건데, 입출력을 index.php를 통해서만 하게 하는겁니다. php좀 하신 분들은 잘 아시는 방법이죠.
다른 php파일은 접근 안되고 오직 index.php만 접근됩니다. 주소뒤에 따라붙는 쿼리, 쉽게말해 명령문들을 가지고 사용자의 요청을 판독해서 맞는 페이지를 출력하는겁니다. 그리고 index.php는 기본파일이기에, 주소에 쓰지 않아도 자동으로 접근됩니다.

2. MVC(모델-콘트롤러-뷰)
이건 워낙 유명해서 따로 말이 필요없죠. 그런데 일하다보면 바빠요. 그러면 모델과 콘트롤러는 굳이 나누지 말고, 일단 뷰만 나눠놓아도 됩니다. 값을 처리하는 부분과, html코드를 출력하는 부분만 나누는거죠. 어차피 브라우저에는 최종 출력하는 html만 보이기 때문에 일단 출력하는 부분만 신경쓰고, 뒤에서 처리 하는 부분은 나중에라도 제가 알아서 어떻게 고치든 상관 없으니깐요.

자, 지금까지 당연한 소리들이었죠. php쫌 하시는 분들은 다들 아는 그런내용입니다.

그러면 이제 진짜 구조를 어떻게 짤까... 여기서부터 진짜 저의 개똥철학이 들어갈것 같습니다.
유명 프레임웍이나 CMS들을 흉내내서 만들건데요. 하지만, 이건 php5.2 입니다. 옛날식으로 만들어야 곘는데요.
저는 이렇게 할 생각입니다.

1. 프로그램 전체에서 쓰는 전역 변수/함수는 정적(static)클래스 하나에 다 때려넣는다. 이 정적 클래스 하나가 GLOBAL의 역할을 하는겁니다. 인스턴스를 생성하지 않으니 변수와 겹칠 일도 없지요.

2. 일반 클래스는 되도록 쓰지 않는다. 가능한 한 배열과 include/require로 해결한다.

3. 기본적인 입력값 필터링은 index.php에서 일괄적으로 한다. 당연히.

4. 레이아웃과 콘텐츠를 분리. 당연히.

5. 하향식(?) include를 사용. 그러니까, 콘텐츠에서 레이아웃을 매번 include 하는게 아니라, 레이아웃 안에 콘텐츠를 include하는 식입니다. 이것도 요즘은 당연한 개념이죠.

만들고 싶은 구조는 많지만 시간이 없으므로, 클라이언트 요구를 구현할 수 있는 선에서만 정합니다.

다음에 시간이 언제가 될지 모르지만 저것들을 구체적으로 어떻게 풀어갈지 이야기해 보겠습니다.

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
마스터충달
19/07/24 23:18
수정 아이콘
무슨 말인지 모르겠으니 가만히 있어야 겠다...
retrieval
19/07/24 23:20
수정 아이콘
예전부터 궁금했는데 웹개발에서 쓰는 툴과 언어가 유행처럼 바뀐다고 들었는데 요샌 자바스크립트나 스타트업은 파이썬으로 만드는데도 많다고 들었습니다. 이런 유행은 누가 주도하는거죠? 웹개발자들끼리 한날한시에 만나서 이거다! 하는것도 아닌데 유행이 지고 새 유행이 뜨는게 신기하더라구요
닭장군
19/07/24 23:24
수정 아이콘
그 유행을 전파하는 허브가 되는 온라인 커뮤니티나 네트워크 같은게 있을겁니다. 물론 우리나라 소재는 아니고 영어권 커뮤니티겠죠. 딴직업군도 아니고 개발자들이니, 모뎀시절부터 그런걸로 의사소통 했을겁니다.
-안군-
19/07/24 23:41
수정 아이콘
커뮤니티의 영향도 있겠지만, 개발선도업체 (페이스북, 구글, 아마존 등등...)이 뭘 쓴다더라 하면 그쪽으로 몰려가는.영향도 꽤 크죠. 예전엔 확실히 마소가 그 역할을 했었는데, 요즘은 왠지 많이 뒤쳐지는 느낌이더라고요.
닭장군
19/07/24 23:42
수정 아이콘
아 그것도 그렇겠네요.
-안군-
19/07/24 23:35
수정 아이콘
보통 새로 나오는 플랫폼들이 기능이나 성능이 더 좋고, 쓰기 편한 경우가 많아서 자연스럽게 넘어가는거죠.
저 같은 경우엔 프론트앤드와 백앤드를 같이 작업해야 하다 보니, 통합 개발환경을 세팅하기 좋은 Node.js를 쓰게 되더라고요. 한가지 언어로만 개발을 다 마칠 수 있다는게 매력적이라.
pppppppppp
19/07/24 23:37
수정 아이콘
그냥 뭐가 좋다라고 forum에 올리면 직접 사용해보고 오 좋네?~ 이러면서 퍼지는거죠.

pgr에 이 게임 추천합니다! 글 올라와서 게임 해보고 댓글에 공감합니다~ 이러면서 게임 퍼지듯
케이삶아
19/07/24 23:23
수정 아이콘
(수정됨) 현직에서 아직 5.6 쓰고 있습니다. (게다가 최초에 4.3.x 에서 만들어진 후 구조에서 큰 변화가 없는...)
파편화 된 고객사별 브랜치들을 SVN 으로 관리하면서 업데이트를 해주고 있어서 7.0 으로 교체하면서 대량 소스 변경이 발생하는 순간 브랜치들의 머징 난이도가 천정을 뚫는바...
교체를 못하고 있습니다.
개인용 스크립트 만들때나 7.x 쓰고 있네요.
닭장군
19/07/24 23:29
수정 아이콘
4.3.x시절 구조라면 손이 무지하게 많이 가겠는데요.
케이삶아
19/07/24 23:31
수정 아이콘
5.3 에서 5.6 으로 올리면서 register_globals = On 기준 으로 작업 된 것들 다 찾아서 고치느라 그것만 해도...
멸천도
19/07/25 09:19
수정 아이콘
옛날에 잘 모르던 시절에 그거때문에 개고생한 기억이 떠오르네요.
알고보니 너무 간단한거였는데...ㅠㅜ
ridewitme
19/07/24 23:29
수정 아이콘
라라벨이랑은 상관없는얘긴가용
닭장군
19/07/24 23:31
수정 아이콘
옙. php5.2에서는 라라벨 안돌아갑니다. 라라벨 될것같으면 저 고생안하죠. ㅠㅠ.
ridewitme
19/07/25 07:01
수정 아이콘
글군요혹시 5.2에서 돌아가는 프레임워크가 있나요? 안쓰신다면 이유도.. 궁금합니다! + 생각해보니 유지보수만 하는거면 그냥 프레임워크 안쓰는게 낫겠네요
닭장군
19/07/25 11:00
수정 아이콘
(수정됨) 아마 없지싶은데, 검색좀 해봐야할것 같습니다.
제가 러라벨되면 이고생 안한다고 하긴 했지만, 반드시 맞는말은 아닌것 같긴 합니다.

쓰고있는 옛날프로그램 고쳐줘야하는데 , 이럴땐 프레임워크 익혀쓰는것보다 최소한의 입출력구조, 같은일 반복안하는 구조만 만들고, 그 구조안에서 콘텐츠 부분은 그때그때 만들어 붙이는게 더 나은것 같을때도 많거든요. 일단 입력통제만 잘해놓으면 기본적인 예외상횡방어는 되는거고, 출력물만 표준맞추고 호환성 맞추고 똑바로 나오게 하면 의뢰자는 만족하니깐요.

강제로 주어진 환경안에서 효율싸움을 해야하다 보니, 좋다는거 도입하기에는 애매할때가 많죠. 의뢰자가 구국의 결딴을 내리지 않는 한..
당근병아리
19/07/25 08:39
수정 아이콘
pgr21에서 기억이 나서 적습니다
pgr21 확장이전할때 php7로 변경하며 위험부담이 있었습니다
하지만 제가 도입을 얘기하였고 또한 실행하여 php7에서도 잘 되는 중입니다
그리고 rewrite로 매칭( ex) pgr21.com/freedom/81961 )을 시도한 적이 있지만 여러문제가 나타나서 중단하였습니다

뉴pgr21는 HMVC + DAO 으로 기본적으로 하려고 고려중입니다 ( 정리ㅠㅠ )
ridewitme
19/07/25 11:36
수정 아이콘
그러네요 리라이트를 하면 예쁘겠네요
참치성애자
22/06/14 13:18
수정 아이콘
이글이었네요... 개발 초보자가 php 5.2버전에 곶통받고있습니다..
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회 추천
81962 [일반] [소설] 대한(KOREA)형 황제 모델 [11] 잰지흔5114 19/07/25 5114 1
81961 [일반] [PHP] 옛날 php에게 곶통 받아봅시다. - 1 [18] 닭장군5663 19/07/24 5663 3
81960 [일반] 뻘글) 앵무새와 다른 동물의 공동생활 [19] 라이츄백만볼트8539 19/07/24 8539 6
81958 [일반] '가습기 살균제' 8개월 재수사 마무리..총 34명 기소 [25] 캐모마일8387 19/07/24 8387 1
81957 [일반] 한국(KOREA)형 주류모델(3) [49] 성상우8089 19/07/24 8089 15
81956 [일반] 여러분들의 워너비 몸매는 누구인가요? [96] 삭제됨11403 19/07/24 11403 0
81955 [정치] 일본 상품 불매로 반사적 피해를 보시는 분들이 걱정됩니다.. [240] 마법거북이18527 19/07/24 18527 26
81954 [일반] 돈은 나를 자유롭게 한다. [30] KBNF8993 19/07/24 8993 10
81953 [정치] [속보]러시아 "中과 연합훈련..영공침범 의도없다 믿어달라" [516] 한국화약주식회사25451 19/07/24 25451 41
81952 [일반] 유전자 도핑 (Gene Doping) [20] 모모스201313213 19/07/24 13213 4
81950 [일반] [9] 백일휴가를 앞둔 류이병의 은밀한 고민 [5] goldfish4504 19/07/24 4504 2
81949 [일반] 혹시 저처럼 돈 욕심 크게 없으신분 계신가요? [166] 허스키17646 19/07/24 17646 3
81947 [정치] [단상] 영공침범 러시아 군용기에 대한 경고사격. 대담하지만 훌륭한 조치 [72] aurelius12863 19/07/23 12863 23
81946 [정치] 회원 진선미의 추천도서, <<인도 수구세력 난동사>>(1) 진선미7032 19/07/23 7032 2
81945 [일반] 하이퍼루프 관련 소식 [28] 타카이10516 19/07/23 10516 0
81943 [일반] 유전자치료제, 바이오의약품, 바이오시밀러 [15] 모모스201312161 19/07/23 12161 11
81942 [정치] [기사] 軍, 호르무즈 파병 방안 검토 착수… 靑은 긍정도 부정도 안해 [61] aurelius13572 19/07/23 13572 8
81941 [일반] 장기(將棋)에 대하여 [23] 성상우6988 19/07/23 6988 6
81940 [일반] [속보] 중국과 러시아 군용기, 독도 인근 영공을 침범하여 합류비행…軍, 경고사격으로 대응 [71] 修人事待天命14465 19/07/23 14465 5
81939 [일반] 인터넷, 이제 인공위성으로! [30] 타카이9140 19/07/23 9140 0
81937 [일반] 여론참여심사 결과를 알려드립니다. [3] 4619 19/07/23 4619 1
81936 [일반] [팝송] 캣피쉬 앤 더 보틀맨 새 앨범 "The Balance" [1] 김치찌개5386 19/07/22 5386 1
81934 [정치] 한국군이 항공모함을 건조하기로 하였답니다 [178] Misaki Mei17240 19/07/22 17240 2
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로