음... php에서 define 으로 설정한 값을 불러올 때 같지않은 이유

음... php에서 define 으로 설정한 값을 불러올 때 같지않은 이유

QA

음... php에서 define 으로 설정한 값을 불러올 때 같지않은 이유

본문

/shop 으로 접속하지 않아도 쇼핑몰을 메인으로 쓰기 위한 방법으로

 

G5_COMMUNITY_USE 를 fasle 선언한 뒤

 

root 에 있는 head.php, index.php, tail.php 파일에다가

 

G5_COMMUNITY_USE === false 일 경우 shop 디렉터리에 있는 shop.head.php, index.php, shop.tail.php 를 불러오도록 설정을 하잖아요...

 

저 방법을 몇년동안 써왔는데 이제서야 궁금해진 부분이 생겨서 질문 드립니다....

 

G5_COMMUNITY_USE 도 config.php 에다가 define('G5_COMMUNITY', false); 로 세팅을 하는데

 

여기서!! 메인과 서브를 구분할 때 쓰는 조건문은 !defined('_INDEX_') 기면 서브 아니면 메인 으로 처리가 되던데

 


if( !defined('_INDEX_') ) {
    // 메인이 아닐 경우 불러올 소스
    // 여기서는 실행이 됨
}
 
if( !defined('G5_COMMUNITY_USE') ) {
    // G5_COMMUNITY_USE 가 false 일 경우 불러올 소스
    // 이건 실행이 안됨
}
 
if( G5_COMMUNITY_USE === false ) {
    // 로 해야 실행이 됨

조건 처리할 때 똑같은 정의를 내렸는데 불러올 떄는 왜 2개가 다른지 궁금합니다....;;

 

ps. 개발자가 아니어서 어렵게 알려주시면 못알아들을지도...ㅋㅋㅋ;;

이 질문에 댓글 쓰기 :

답변 1

defined는 값을 비교하는 함수가 아니라 해당 상수가 선언 되었는지 아닌지를 판별하는 함수입니다

즉, G5_COMMUNITY_USE값이 어떤가는 상관없고, define("G5_COMMUNITY_USE", "false")
식으로 문서에 선언이 되어있으면 defined에서는 해당 상수가 존재하니, true를 리턴합니다.

다만 !가 붙어있으니 true가 false로 리턴이 되고, 해당 if문 안의 구문들은 실행되지 않습니다.

G5_COMMUNITY_USE === false

해당 비교문은 G5_COMMUNITY_USE의 상수에 false란 값이 들어가있냐 아니냐를 묻고, 그에 따라 true, false를 리턴합니다.

 

그누보드 index.php에서는 최상위 상단에 define으로 _INDEX_ 상수가 선언되어있으며, 다른페이지에는 존재하지 않는 상수입니다.
해당 상수가 없는 페이지(index 페이지가 아닌) 페이지는 해당 상수의 존재로 구분할 수 있습니다

답변을 작성하시기 전에 로그인 해주세요.
전체 168
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT