본문 바로가기
개발/PHP

MVC모델을 적용한 블로그(게시판) 만들기 - 0.개념 정리 및 준비하기

by 똘똘이박사 2018. 6. 21.

PHP MVC 모델을 적용한 블로그 만들기



0. 개념 정리 및 준비하기


  이번 포스팅에서는 앞으로 만들어 볼 MVC모델 프로그램을 만들기 위해 먼저 정의해야 할 내용에 대해 짚어 보려고 합니다.


MVC 모델 이란


우선 MVC 모델이 뭔지 간략하게 이야기 하도록 하겠습니다.

MVC모델은 쉽게 말해 사용자의 DB관련 내용 처리(M:Model), 화면 출력 처리(V:View), 요청분석/처리(C:Controll)  등으로 크게 3부분으로 나누어 프로그램을 개발하는 방식을 말합니다.


 - M(Model) : DB 관련 내용 처리 

                  DB에 대한 접속이나, SQL Query 실행 및 결과를 처리하는 부분입니다.

 

 - V(View) : 화면출력처리

                  사용자가 보게될 화면에 대한 처리입니다.

                  보통 Model에서 처리된 내용을 화면에 출력하여 사용자에게 보여주게 됩니다.


 - C(Controll) : 요청분석/처리

                  사용자의 웹페이지 내에서 요청하게 되는 내용을 분석하고 요청에 따른 알맞은 처리를 수행합니다.

                  예를들어 게시판에서 목록을 보기 위해 메뉴를 누르는 행위는 게시판 목록 조회 요청에 해당합니다.

                  그리고 게시판 목록의 제목을 클릭하는 행위는 게시글을 조회 요청에 해당합니다.

                  컨트롤러는 이러한 요구사항을 분석하고 각각의 요구 사항에 맞는 동작을 수행합니다.







모든 요청은 한 곳으로 모여야 한다 - Front Controller


MVC 모델을 완성하기 위해서는 위의 MVC 개념 그림에서 보는것과 같이 모든 요청이 한 군데로 집중이 되어야 합니다.

위 그림을 기준으로 사용자의 모든 요청사항은 Front Controller 라는 곳으로 가야 합니다.

Front Controller은 사용자의 모든 요청사항을 받아 들이고 해당 요청에 맞는 Controller를 호출하는 역활을 합니다.

예를 들어 블로그 내에서 게시글 목록을 본다거나, 글을 확인하거나, 등록 하는 일

또는 일정을 조회 한다거나 등록 하는일. 

모두 각기 다른 일이 지만 이 모든 요청은 처음에 한 군데로 모아야 한 다는 것입니다.


이 포스팅에서는 '게시판' 이라는 메뉴를 클릭 하였을때 상황을 가정하고 작성하였습니다.


이렇게 위와 같이 모든 요청사항을 한 곳으로 모이게 하기 위해 필요한 파일이 있습니다.


.htaccess 파일은 웹호스팅을 이용하는 경우와 같이 직접 http.conf 를 수정하여 사이트를 운영할 수 없는 경우에 대한 대안으로 자주 사용하고 있습니다.





.htaccess - URL 규칙 만들기


요구사항을 정확히 분석하기 위해서는 나름의 규칙이 필요 합니다.

MVC 모델에서는 URL을 분석해 요청사항을 분석하기 때문에 URL 구성에 대한 규칙이 필요 합니다.

여기서는 아래와 같은 규칙을 따를 예정입니다.


http://localhost:8080/메뉴/action/category/idx/pageNo/searchKey

  

 구분

설명

 idx

 상단 메뉴에 대응하는 값

 action

 목록, 게시글보기, 쓰기, 수정하기, 삭제하기 등의 기능에 대응하는 값

 category

 메뉴 하위에 다른 메뉴가 있을 경우 대응하는 용도로 사용될 값

 idx

 글 번호에 대응하는 값

 pageNo

 글을 읽고 다시 목록으로 돌아 가거나, 수정, 삭제 후 목록으로 돌아 갔을때 처음으로 돌아가지 않기 위해 현재 위치(페이지)를 저장하기 위한 값

 searchKey 

 조건 검색 후 페이지 이동, 글을 읽은 후 검색된 목록으로 이동 등과 같이 검색한 결과를 유지하기 위해 검색 했던 조건을 저장할 용도로 사용할 값


URL 규칙은 설정하기 나름 입니다.

따라서 필요에 따라 적절하게 규칙을 수정하여 사용하시기 바랍니다.




테이블 생성 - 게시판용 테이블 만들기


앞으로 포스팅을 진행하는데 필요한 게시판을 먼저 만들어 보도록 하겠습니다.


CREATE TABLE `board` (

  `idx` int(11) NOT NULL,

  `title` varchar(200) NOT NULL,

  `content` text NOT NULL,

  `category` varchar(20) NOT NULL DEFAULT '''''',

  `reg_date` date NOT NULL,

  `edit_date` date NOT NULL,

  `comment_cnt` int(11) NOT NULL DEFAULT '0'

) ENGINE=InnoDB DEFAULT CHARSET=utf8;


ALTER TABLE `board`

  ADD PRIMARY KEY (`idx`);


ALTER TABLE `board`

  MODIFY `idx` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

COMMIT;


이 포스팅의 게시판은 mysql을 사용하고 있습니다.

반응형