적용기술

애플리케이션의 코드를 유지하고 관리하기 쉽게 만들기 위해 메타커머스 솔루션은 Model, View, Controller MVC패턴을 적용하여 데이터, 프리젠테이션 및 플로우를 별도의 파트별 파일로 구성합니다.

MVC 요소의 역할에 대한 많은 의견이 있지만, 메타커머스는 각 요소에 아래와 같이 정의합니다.

  • Model : 애플리케이션의 데이터를 관리하고, 애플리케이션에 필요한 비즈니스 로직을 작성합니다.
  • View : 사용자에게 모델을 통하여 생성된 정보를 표시하는 HTML과 템플릿 코드로 구성된 파일입니다.
  • Controller : 글루코드(glue code) 역할을 하며, View(또는 사용자)와 Model(또는 데이터)을 연결합니다.

Model

모델(model)은 데이터베이스에 데이터를 저장하거나 검색하는 일을 합니다. 데이터베이스에 데이터를 넣을 때 회사 표준에 맞게 정규화 하거나, 컨트롤러에 데이터를 전달하기 전 특정 방식으로 열을 포맷하는 작업은 애플리케이션에서 일상적으로 일어나는 일입니다.

모델을 통하여 이러한 규칙을 유지함으로써 여러 컨트롤러에서 같은 코드가 반복하여 작성되지 않게 하고, 실수로 데이터가 업데이트 되지 않도록 일관성을 유지합니다.

  • 프론트 : application/custom/model 디렉토리 아래에 위치하고 있으며, 확장자는 .class.php입니다.
  • 관리자 : application/model 디렉토리 아래에 위치하고 있으며, 확장자는 .class.php입니다.

View

뷰(view)는 템플릿(template) 코드가 포함된 HTML 파일입니다. 메타커머스 솔루션의 템플릿 코드는 습득과 활용 방법이 간단한 Template_ 를 채용하고 있습니다. 템플릿 코드는 변수의 내용을 표시하거나 일부 항목을 반복하고 조건에 따라 정보를 표시하거나 감출수 있습니다.

  • 프론트 : application/www/asstes/{template|mobile_templet} 디렉토리 아래에 위치하고 있으며, 확장자는 .htm 입니다.
  • 관리자 : application/module/{moduleGroup}/assets/views 디렉토리 아래에 위치하고 있으며, 확장자는 .htm 입니다.

Controller

컨트롤러(controller)는 사용자로부터 입력을 수신한 다음 사용자가 이를 어떻게 처리할지 결정한 후 모델에 데이터를 전달하여 저장, 수정, 삭제 합니다. 이러한 과정에서 모델의 범위를 벗어난 특수한 작업을 처리하기 위해 필요한 경우 다른 유틸리티 클래스를 로드하는 작업도 포함합니다.

또한 컨트롤러는 모델에게 데이터를 요청한 다음 표시 할 뷰에 연결하여 전달하는 역할도 합니다. 이 과정에서 리디렉션, 인증, 웹 보안, 인코딩 등의 HTTP 요청과 관련된 모든 것을 함께 처리합니다.

메타커머스 솔루션의 컨트롤러는 이러한 역할을 수행하기 위해 프론트와 관리자 특성에 맞추어 3가지 타입의 컨트롤러를 제공합니다.

프론트 Controller

Controller

사용자로 부터 입력된 데이터를 모델에 전달하여 데이터를 요청한 다음 표시할 뷰(template)에 전달합니다.

프론트엔드 개발자와 분업/협업할 수 있도록 기존 PHP 솔루션의 구조와 유사한 URL매핑 방식을 사용합니다. View 파일을 작업중인 프론트엔드 개발자가 URL을 기반으로 PHP코드를 쉽게 열람하도록 구성되어 있어, View 작업시 백엔드 개발자의 도움을 최소로 할 수 있습니다.

application/www 디렉토리 아래에 위치하고 있으며 확장자는 .view.php 입니다.

Ajax Controller

사용자로 부터 입력된 데이터를 비동기로 전달받아 모델에 전달하여 데이터 입력, 수정, 삭제하는 역할을 합니다.

주로 AJAX 통신을 통해 작업을 수행하며, 백엔드 개발자 독자적으로 개발 가능하도록 구성되어 있습니다.

application/custom/controller 디렉토리 아래에 위치하고 있으며 확장자는 .class.php 입니다.

관리자 Controller

HTTP 메소드(GET, POST)에 따라 View에 데이터를 전달하거나, JSON 형태의 데이터를 비동기 방식으로 전달합니다.

application/module/{moduleGroup}/controller 디렉토리 아래에 위치하고 있으며 확장자는 .class.php 입니다.