고도몰 개발 가이드

고도몰 제공 도구

  • 관리자 > 상단네비게이션 > 우측 개발소스관리 메뉴는 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를 예로 들어 설명드리겠습니다.
  1. 자동패치를 지원받기 위해서는 개발소스관리 > 원본소스 보기에서 튜닝하고자 하는 소스를 다운로드 받거나 복사하기 버튼을 이용해 data/module/Component/Cart 디렉토리로 Cart.php를 복사합니다.
  2. 복사한 파일의 내용은 원본과 다르며 원본 소스의 class를 상속받아서 사용할 수 있도록 아래와 같이 Wrapping 처리하여 제공됩니다.

    Wrapping 처리를 하지 않고 원본 그대로 사용하시면 추후 자동패치가 절대 적용되지 않사오니 이점 유념하시기 바랍니다.

    <?php
    namespace Component\Cart;
    
    class Cart extends \Bundle\Component\Cart\Cart
    {
    }
    
  3. 원본 소스의 메소드를 확장 개발하실 때, 반드시 원본 소스의 부모 메서드를 상속 받아야 자동패치가 지원됩니다.

    단, 원본 소스에 없는 사용자가 정의한 Method를 추가할 때는 해당되지 않습니다.

    public function __construct()
    {
       parent::__construct();
    }
    
    public function helloWorld()
    {
       parent::helloWorld();
    
       // 원본 소스의 부모 메소드에서 return 값이 있을 경우 자식 메소드에서도 동일하게 return 처리를 하는 것이 좋습니다.
       return parent::helloWorld();
    }
    
  4. 개발모드(data/module)에서 개발이 완료되면 개발소스관리 > 개발작업소스 보기에서 운영소스로 적용하기 버튼을 눌러 적용시켜주면 모든 개발이 완료됩니다.