줏어들은 건 있어서 디자인패턴이란 책도 집에 한 권 있다. (아, 물론 읽어 본 적은 없다...그냥 소장만 하고 있다.)
문득 작년에 본 루비온레일즈(처음엔 루비온레일즈로 게시판을 만들려고 했다.) 책에서 MVC 모델을 읽은 기억이 났다.
그래서 구글링을 통해 MVC 모델로 본 게시판 만들기를 정리해 봤다.
(사실 이런건 맨 처음에 해야하는건데...)
MVC(Model-View-Controller) 모델은 소프트웨어 재사용성이나 협업에 있어서 중요한 역할을 하는 것 같다.
(내 관심은 재사용성이다.)
MODEL
우선 Model은 사용자나 프로그램 상에서 필요로 하는 하나의 객체라고 생각하면 된다.
이런 데이터 모델들을 다루기 위한 비즈니스 로직도 정할 필요가 있다.
이런 데이터들을 저장해야 영속성(Persistence)이 유지된다. 보통은 DB에 저장한다.
VIEW
제일 쉬운 개념이다. 사용자가 보는 것이다.
게시판에서는 HTML로 구성된다.
일관된 모습을 유지하고 유지/보수를 편리하게 하려면 CSS를 이용하는 것이 좋다.
페이지 자체를 바꾸지 않고도 겉모양을 편하게 바꿀 수 있기 때문이다.
CONTROLLER
사용자의 요청 사항을 분석한다. PHP로 처리된다.
뷰와 모델 사이에서 교통정리하는 역할이다.
예를 들어, 사용자가 제목(MODEL)을 선택하면 해당 URL과 글번호를 호출하고, DB에서 게시글을 가져와 VIEW로 넘긴다.
이처럼 게시판을 설계하기 전에 유즈-케이스(Use case)를 작성하면 좋다.
문득 작년에 본 루비온레일즈(처음엔 루비온레일즈로 게시판을 만들려고 했다.) 책에서 MVC 모델을 읽은 기억이 났다.
그래서 구글링을 통해 MVC 모델로 본 게시판 만들기를 정리해 봤다.
(사실 이런건 맨 처음에 해야하는건데...)
MVC(Model-View-Controller) 모델은 소프트웨어 재사용성이나 협업에 있어서 중요한 역할을 하는 것 같다.
(내 관심은 재사용성이다.)
Model: 비즈니스 로직과 처리
View: 사용자 인터페이스(UI)
Controller: 네비게이션과 입력
MODEL
우선 Model은 사용자나 프로그램 상에서 필요로 하는 하나의 객체라고 생각하면 된다.
- 회원
- 관리자
- 게시물
- 조회수
- 날짜
- 이메일 등등
이런 데이터 모델들을 다루기 위한 비즈니스 로직도 정할 필요가 있다.
- 로그인 후에 글쓰기가 가능하다.
- 본인이 작성한 글만 수정, 삭제가 가능하다.
- 관리자는 모든 글을 삭제할 수 있다...등등
이런 데이터들을 저장해야 영속성(Persistence)이 유지된다. 보통은 DB에 저장한다.
View | ↔ |
Controller | ↔ |
Model | ↔ |
영속성 | DB |
VIEW
제일 쉬운 개념이다. 사용자가 보는 것이다.
게시판에서는 HTML로 구성된다.
- 해당 페이지의 핵심 데이터
- 비즈니스 로직 위젯 : 수정이나 삭제같은 버튼 등
- 네비게이션 위젯 : 페이지 표시, 게시판간 전환을 위한 셀렉트 박스 등
- 스킨 : 로고나 색상, header, footer 등
HEADER |
BODY |
FOOTER |
일관된 모습을 유지하고 유지/보수를 편리하게 하려면 CSS를 이용하는 것이 좋다.
페이지 자체를 바꾸지 않고도 겉모양을 편하게 바꿀 수 있기 때문이다.
CONTROLLER
사용자의 요청 사항을 분석한다. PHP로 처리된다.
뷰와 모델 사이에서 교통정리하는 역할이다.
예를 들어, 사용자가 제목(MODEL)을 선택하면 해당 URL과 글번호를 호출하고, DB에서 게시글을 가져와 VIEW로 넘긴다.
이처럼 게시판을 설계하기 전에 유즈-케이스(Use case)를 작성하면 좋다.
- 회원이 로그인한다. ▶ 컨트롤러가 로그인 처리
- 게시판으로 이동한다.
- 게시물 목록에서 글을 선택해 내용을 읽는다. ▶컨트롤러가 DB에서 내용을 가져온다.
- 글을 작성한다. ▶컨트롤러가 저장한다.
- 수정한다. ▶ 수정한 내용을 저장한다.
- 삭제한다. 등등
VIEW | CONTROLLER | MODEL |
로그인/아웃 글쓰기 수정 삭제 읽기 등등 |
login() / logout() post() edit() delete() read() 등등 |
회원 관리자 게시물 첨부파일 등등 |
'PHP > 게시판 만들기' 카테고리의 다른 글
PHP RSS feed 만들기 (0) | 2009.07.15 |
---|---|
게시판 DB 스키마 재정의 (0) | 2009.02.25 |
해결못한 한글입출력 문제 (1) | 2009.02.12 |
게시판 DB 스키마 정리 (0) | 2009.02.12 |
게시판 검색 기능 수정 (0) | 2009.02.11 |