LogoLogo
NHN커머스 메인고도몰 운영 도움말
  • 고도몰 튜닝 가이드
    • Intro
    • 이해하기
      • 용어
      • 구조
        • 튜닝 진행 방법
        • 튜닝 가능 범위
        • 고도몰 아키텍쳐(Architecture)
        • 코딩 규칙
        • 네이밍 규칙
    • 준비하기
      • 심화 구조 이해
        • Routing 소개
        • Controller 소개
        • HTTP 소개
        • Database 소개
        • Security 소개
        • Exception 소개
        • Language 소개
      • 오픈 API 사용가이드
        • 인증키 발급 방법 안내
        • 공급사 이용 방법 안내
    • 튜닝하기
      • 소스 코드 튜닝
        • 기본 튜닝 방법
        • 컨트롤러 튜닝 방법
        • 템플릿 튜닝 방법
        • 튜닝 시 유의사항
      • 데이터베이스 튜닝
        • 튜닝 방법
        • 튜닝 시 유의사항
        • 고도몰 테이블 명세서
        • PhpMyAdmin 이용
      • 디버깅 방법
      • 패치 확인 및 대응 방법
    • 튜닝 따라하기
      • 관리자 GNB 색상 변경하기
      • 즐겨찾기 메뉴 바로가기 만들기
      • 관리자 메뉴 추가하기
      • 관리자 메뉴 수정하기
      • 관리자 페이지 추가하기
      • 관리자 페이지 수정하기
      • 사용자 페이지 추가하기
      • 사용자 페이지 수정하기
    • 잘못된 튜닝사례
      • 상속 미준수
      • 메소드 관련
      • 그 외
  • 기타 개발 가이드
    • 로그 사용 가이드
    • [PMA] 내보내기(export) 이용 안내
    • 외부 스크립트 사용 가이드
    • SDK 사용 가이드
    • [DB] 사용 가이드
  • 튜닝가이드 영상 보기
Powered by GitBook
LogoLogo

NHN COMMERCE

  • 공지사항
  • 회사소개

Partners

  • 서비스 제휴문의
  • 셀러어드민
  • 디자인 파트너

Developers

  • 스토어

©NHN COMMERCE Corp. All rights reserved.

On this page
  • 📌 기능 확장
  • 📌 클래스 호출

Was this helpful?

  1. 고도몰 튜닝 가이드
  2. 튜닝하기
  3. 소스 코드 튜닝

기본 튜닝 방법

튜닝 시 공통적으로 적용되는 사항에 대한 내용입니다.

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

📌 기능 확장

고도몰에서 제공하는 기본적인 기능을 기반으로 기능 확장이 필요한 경우 튜닝 전 개발소스관리 > 원본소스보기 에서 고도몰 원본소스를 참고하시기 바랍니다.

아래 사항을 반드시 지켜주셔야 자동패치를 지원받으실 수 있습니다.

  • Component/Cart/Cart.php를 예로 들어 설명드리겠습니다.

  1. 자동패치를 지원받기 위해서는 개발소스관리 > 원본소스 보기에서 튜닝하고자 하는 소스를 다운로드 받거나 복사하기 버튼을 이용해 data/module/Component/Cart 디렉토리로 Cart.php를 복사합니다.

  2. 복사한 파일의 내용은 원본과 다르며 원본 소스의 class를 상속받아서 사용할 수 있도록 아래와 같이 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)에서 개발이 완료되었다면, 개발소스관리 > 개발작업소스 보기에서 운영소스로 적용하기 버튼을 눌러 운영 소스에 반영합니다.

Wrapping 처리를 하지 않고 원본 그대로 사용할 경우 자동 패치가 적용되지 않습니다.

📌 클래스 호출

커스텀 개발 시 다른 클래스를 사용하는 경우에는 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 = [
            '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);

        // ... 중략
    }
}

Previous소스 코드 튜닝Next컨트롤러 튜닝 방법

Last updated 1 year ago

Was this helpful?