Godomall Guide Development Guide
Wednesday, April 24, 2024 6:20 PM고도몰 개발 가이드
고도몰 제공 도구
-
관리자 > 상단네비게이션 > 우측 개발소스관리
메뉴는 PRO이상 사용자에게만 제공됩니다. (스탠다드는 제공하지 않습니다) - 고도몰은 개발소스관리를 이용하셔야 소스를 다운로드하실 수 있습니다.
개발시 유의사항
-
본 문서의 준수사항을 반드시 지켜주셔야 자동패치를 지원받으실 수 있습니다.
-
커스텀 개발 시 다른 클래스를 사용하는 경우에는
namespace 와 class 사이에 use 를 이용하여 사용하려는 class 를 추가
해야 합니다.<?php namespace Component\Cart; // use 를 이용하여 추가하지 않으면 Component\Cart\DBTableField 라는 class 를 찾게 되며 해당 class 는 존재하지 않기때문에 오류가 발생합니다. // 실제 아래 함수의 중략된 부분에서는 Component\Member\Util\MemberUtil 과 Component\Mall\Mall 도 함께 사용하기때문에 모두 use 를 이용하여 추가하여야 합니다. use Component\Database\DBTableField; class Cart extends \Bundle\Component\Cart\Cart { // 아래는 Cart::saveInfoCart 함수의 일부를 튜닝한 예제 입니다. // 튜닝 시 해당 함수에서 DBTableField 를 사용하기 때문에 use 로 추가해주어야 합니다. public function saveInfoCart($arrData) { // ... 중략 // 장바구니 테이블 필드 $arrExclude = [ // 'siteKey', 'memNo', 'directCart', ]; // 방법1 use 를 통한 class 추가(use 를 한번만 추가하면 해당 클래스 내부에서는 DBTableField class 를 찾을 때 use 에 선언된 namespace 기반으로 찾게 됩니다. $fieldData = DBTableField::setTableField('tableCart', null, $arrExclude); // 방법2 namespace 를 붙여서 사용(1번 방법을 추천합니다. 2번을 사용하게 되면 사용할 때마다 namespace 를 작성해야합니다.) $fieldData = \Component\Database\DBTableField::setTableField('tableCart', null, $arrExclude); // ... 중략 } }
-
module 폴더 이외에서의 개발 관련 작업은 운영정책상 삭제될 수 있습니다.
-
개발 가이드를 준수하지 않아 발생하는 모든 문제는 전적으로 이용자에게 책임이 있습니다!
개발 가능 영역
- 개발모드와 운영모드에 따라
사용자 소스 디렉토리(User Source Directory)
하위에 2개의 디렉토리로 구분됩니다.- 개발모드:
data/module
- Controller의 경우 튜닝 후 개발소스관리 메뉴에서 미리보기를 통해 확인이 가능합니다.
- 미리보기는 Controller에서만 가능합니다. (Component, Widget은 불가)
- 운영모드:
module
- 이곳에 파일을 올리거나 수정 후 저장하시면 즉시 운영사이트에 반영됩니다.
- 개발모드:
- 사용자가 튜닝할 수 있는 영역
-
module/Controller
컨트롤러 영역으로 사용자 URI 요청에 1:1 대응합니다. -
module/Controller/Api
api 영역으로 URI 요청에 1:1 대응합니다. -
module/Component
컴포넌트 영역으로 비즈니스 로직과 데이터 핸들링을 처리 합니다. -
module/Widget
화면 부분요소로 추가할 수 있는 기능을 제공합니다. -
module/Asset
관리자 스킨소스 보기 영역으로 관리자 내의 메뉴 및 페이지를 제공합니다.- 관리자 스킨소스 보기 영역은 상속개념의 영역이 아니므로 자동패치 적용 시, 튜닝영역에 영향이 발생할 수 있습니다.
-
기본 개발 방법
- 튜닝전 개발소스관리 > 원본소스보기에서 전체소스를 다운로드 하여 개발시 참고하시기 바랍니다.
- 본 예시에서는
Component/Cart/Cart.php
를 예로 들어 설명드리겠습니다.
- 자동패치를 지원받기 위해서는 개발소스관리 > 원본소스 보기에서 튜닝하고자 하는 소스를 다운로드 받거나 복사하기 버튼을 이용해
data/module/Component/Cart
디렉토리로Cart.php
를 복사합니다. - 복사한 파일의 내용은 원본과 다르며 원본 소스의 class를 상속받아서 사용할 수 있도록 아래와 같이 Wrapping 처리하여 제공됩니다.
Wrapping
처리를 하지 않고 원본 그대로 사용하시면 추후 자동패치가 절대 적용되지 않사오니 이점 유념하시기 바랍니다.<?php namespace Component\Cart; class Cart extends \Bundle\Component\Cart\Cart { }
- 원본 소스의 메소드를 확장 개발하실 때, 반드시 원본 소스의 부모 메서드를 상속 받아야 자동패치가 지원됩니다.
단, 원본 소스에 없는 사용자가 정의한 Method를 추가할 때는 해당되지 않습니다.
public function __construct() { parent::__construct(); } public function helloWorld() { parent::helloWorld(); // 원본 소스의 부모 메소드에서 return 값이 있을 경우 자식 메소드에서도 동일하게 return 처리를 하는 것이 좋습니다. return parent::helloWorld(); }
- 개발모드(
data/module
)에서 개발이 완료되면 개발소스관리 > 개발작업소스 보기에서 운영소스로 적용하기 버튼을 눌러 적용시켜주면 모든 개발이 완료됩니다.