고도몰5 내부함수 gd_isset gd_policy

·2021년 3월 18일
1

고도몰5 튜닝

목록 보기
2/4

고도몰 튜닝작업하다보면 종종 보게 되는
gd_isset gd_policy 메소드에 대해 아마 대부분 바로 감을 잡으실 테지만
혹여라도 저처럼 헤매시는 분들이나 전문개발자가 아닌 분들 계실까봐 기록해둔다.

1. gd_isset

gd_isset($data['joinAmount'], 0);
(Bundle/Controller/Admin/Member/MemberMileageGiveController.php)

gd_isset($getValue['joinFl'], 'y');
(Bundle/Component/Policy/MileagePolicy.php public function saveMileageGive)

예시로 위와 같은 코드들이 나온다.
2개의 인자Argument 를 주는데,
첫번째 인자로 들어간 변수에 값이 있는지 검사하여 값이 존재하면 해당 값을 리턴하고,
값이 존재하지 않으면 해당 변수에 두번째 인자로 들어간 값을 넣어준 뒤 그 값을 리턴한다.

function gd_isset($a,$b){
  if(!$a){
      $a = $b;
  }
  return $a;
}

즉, 지금까지 파악한 내용으로는 위와 같은 동작을 하는 것으로 보인다.
어라? 그런데 만약 위와 같이 함수가 정의되었다면...

gd_isset($data['joinAmount'], 0); 가 아니라
$data['joinAmount'] = gd_isset($data['joinAmount'], 0);
와 같이 써야 이 동작이 완료될텐데 어째서 그냥 써도 그렇게 기능하는 거죠..?(멘붕)

이 글을 쓰다가 파라미터parameter 값을 참조 전달 하는 &의 사용법에 대해 알게 되었습니다.
https://m.blog.naver.com/jogundesign/220090664801
이런게 가능하다면 대략 아래와 같이 함수가 정의되면 위와 같은 코딩이 가능하겠네요!

function gd_isset(&$a,$b){
  if(!$a){
      $a = $b;
  }
  return $a;
}

2. gd_policy

이 메소드에 대해서는 고도몰 측에 문의해서 아래와 같이 답변을 받았다.


gd_policy() 해당메소드는 정책을 가지고 오는 함수 입니다.
고도몰5 내부 함수이고 system 영역에 있기 때문에 소스 확인은 불가합니다.

해당부분은 es_config 라는 디비테이블에서 값을 가지고 오는데요.
예를들어 gd_policy('basic.info') 는

SELECT * FROM es_config WHERE groupCode = 'basic' AND code = 'info'; 로 확인되는 값을 불러옵니다.
해당부분 이용에 참고부탁드립니다.


phpMyAdmin을 통해 DB에 접속해 es_config 테이블에 들어가보니 json 형식으로 된 data들이 저장돼있다.
gd_policy 메소드는 주로 이 json 형식으로 된 데이터를 불러와서 설정값에 따라 동작하게 만드는 경우 등에 쓰이는 듯하다.
(예를 들어, 회원가입시 축하 마일리지를 지급할지 말지 관리자페이지에서 '정책'을 변경하면 그게 json 형식으로 저장되고, 그 값을 gd_policy로 불러와서 그 값에 따라 회원가입 축하 마일리지 지급 부분이 동작을 하거나 안 하도록)


  • 이제 막 배우기 시작해 배우며 일하고 있는 주니어개발자입니다. 혹여나 잘못 알고 있는 부분, 잘못된 용어 사용 등이 있으면 댓글 부탁드립니다. 감사합니다!
profile
백엔드 개발자. 공동의 목표를 함께 이해한 상태에서 솔직하게 소통하며 일하는 게 가장 즐겁고 효율적이라고 믿는 사람.

2개의 댓글

comment-user-thumbnail
2021년 4월 20일

저도 고도몰 개발하는데, 한 수 배우고 갑니다 좋은 글 감사드려요 :)

1개의 답글