고도몰5 개발 가이드

고도몰5 제공 도구

  • 관리자 > 상단네비게이션 > 우측 개발소스관리 메뉴는 PRO이상 사용자에게만 제공됩니다. (스탠다드는 제공하지 않습니다)
  • 고도몰5는 개발소스관리를 이용하셔야 소스를 다운로드하실 수 있습니다. 개발소스관리

개발시 유의사항

  • 본 문서의 준수사항을 반드시 지켜주셔야 자동패치를 지원받으실 수 있습니다.

  • 고도몰5의 Framework은 user/module에 요청파일이 있으면 무조건 user/module의 'Component'

  • 튜닝 시 다른 클래스를 사용하는 경우에는 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 폴더 이외에서의 개발 관련 작업은 운영정책상 삭제될 수 있습니다.

  • 개발 가이드를 준수하지 않아 발생하는 모든 문제는 전적으로 이용자에게 책임이 있습니다!

개발 가능 영역

  • 개발모드와 운영모드에 따라 아래와 같이 2개의 디렉토리로 구분됩니다.
    • 개발모드 user/data/module
      • Controller의 경우 튜닝 후 개발소스관리 메뉴에서 미리보기를 통해 확인이 가능합니다.
      • 미리보기는 Controller에서만 가능합니다. (Component, Widget은 불가)
    • 운영모드 user/module
      • 이곳에 파일을 올리거나 수정 후 저장하시면 즉시 운영사이트에 반영됩니다.
  • 사용자가 튜닝할 수 있는 영역
    • module/Controller 컨트롤러 영역으로 사용자 URI 요청에 1:1 대응합니다.
    • module/Component 컴포넌트 영역으로 비즈니스 로직과 데이터 핸들링을 처리 합니다.
    • module/Widget 화면 부분요소로 추가할 수 있는 기능을 제공합니다.

기본 개발 방법

  • 튜닝전 개발소스관리 > 원본소스보기에서 전체소스를 다운로드 하여 개발시 참고하시기 바랍니다.
  • 본 예시에서는 Component/Cart/Cart.php를 예로 들어 설명드리겠습니다.
  1. 자동패치를 지원받기 위해서는 개발소스관리 > 원본소스 보기에서 튜닝하고자 하는 소스를 다운로드 받거나 복사하기 버튼을 이용해 user/data/module/Component/Cart 디렉토리로 Cart.php를 복사합니다.
  2. 복사한 파일의 내용은 원본과 다르며 system상속받아서 사용할 수 있도록 아래와 같이 Wrapping 처리하여 제공됩니다.

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

    <?php
    namespace Component\Cart;
    
    class Cart extends \Bundle\Component\Cart\Cart
    {
    }
    
  3. 시스템에 있는 메소드를 사용하실때 반드시 parent::systemMethod();를 하셔야 자동패치가 지원됩니다.

    단, system에 없는 것! 즉, 사용자가 직접 정의한 Method를 추가하실 때는 이러한 규칙이 필요없습니다.

    public function __construct()
    {
       parent::__construct();
    }
    
    public function helloWorld()
    {
       parent::helloWorld();
    
       // 시스템의 메소드에서 특정 값을 return 하는 경우 재정의하는 함수 측에서도 값을 return 처리를 하는 것이 좋습니다.
       return parent::helloWorld();
    }
    
  4. 개발모드(user/data/module)에서 개발이 완료되면 개발소스관리 > 개발작업소스 보기에서 운영소스로 적용하기 버튼을 눌러 적용시켜주면 모든 개발이 완료됩니다.

    실제 운영되지 않는 사이트의 경우 user/module에서 직접 개발하셔도 무관합니다.