묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
애드온 등에서 XE선언(정의) 하는 이유?
2014.03.27 21:04
제목이 곧 내용.
...이 아니라, XE정의 하는 이유가 궁금합니다.
if(!defined("__XE__")) exit(); 이게 지금의 XE정의인데,
if(!defined("__ZBXE__")) exit(); 가 예전의 제로보드XE일때의 정의입니다. 예전에 어떤 글을 봤는데, 신버전에 호환 안되는 애드온 수정법이라면서 올라온게 ZBXE를 XE로 고치는 거더라고요.
그랬더니 작동 된다고..
그런데 XE신버전에도 ZBXE라 정의해도 정상작동 하고,
정의를 안해도 작동하던데 대체 왜 하는지 궁금합니다.
참고로 저는 대세를 따라서 if(!defined("__XE__")) exit(); 를 씁니다.
...이 아니라, XE정의 하는 이유가 궁금합니다.
if(!defined("__XE__")) exit(); 이게 지금의 XE정의인데,
if(!defined("__ZBXE__")) exit(); 가 예전의 제로보드XE일때의 정의입니다. 예전에 어떤 글을 봤는데, 신버전에 호환 안되는 애드온 수정법이라면서 올라온게 ZBXE를 XE로 고치는 거더라고요.
그랬더니 작동 된다고..
그런데 XE신버전에도 ZBXE라 정의해도 정상작동 하고,
정의를 안해도 작동하던데 대체 왜 하는지 궁금합니다.
참고로 저는 대세를 따라서 if(!defined("__XE__")) exit(); 를 씁니다.
댓글 6
-
YJSoft
2014.03.27 21:13
-
키스투엑스이
2014.03.27 21:20
그렇군요. 감사합니다.
그럼 애초에 if(!defined("__XE__")) exit(); 요거를 안써도 정상작동 하긴 한다는거네요. -
이즈야
2014.03.27 21:28
해당 코드를 작성하지 않을 경우 외부 주소로 직접 php 파일에 접근해 원치 않는 동작을 일으킬 수 있습니다.
XE 프레임워크에서 불러들인 경우가 아니면 함수 실행을 방지하는 용도로 사용됩니다.
구버전과 호환을 유지하려면 다음과 같이 작성해주세요.
if (!defined('__XE__') && !defined('__ZBXE__')) exit(); -
키스투엑스이
2014.03.27 21:35
답변 감사합니다.
이즈야님, 귀찮으시겠지만
http://c.bumcore.com/notice/118
이글 읽어주시면 감사하겠습니다. -
이즈야
2014.03.27 22:06
모바일에서 보고 있어서 답변은 좀 나중에 해드릴게요 ㅠㅠ -
키스투엑스이
2014.03.27 22:08
답글 달아주신것만으로도 감사합니다.
저는 조금 더 만져봐야겠네요.
좋은 레이아웃 감사합니다.
애드온 등 xe에서 사용하는 대부분의 php 파일은 웹 경로 하위 경로에 위치하게 됩니다.
따라서 addons/~~~/~~~.controller.php 등을 입력하여 직접 접근이 가능한데요, 애드온/모듈에 따라 오작동 혹은 예상치 못한 동작이 있을수 있기에 xe에서 불러오지 않은 경우에 빠져 나가는 겁니다.
ZBXE라고 정의해도 동작하는 것은, 1.7버전까지도 config/config.inc.php에서 define('__ZBXE__', __XE__); 로 정의하고 있기 때문입니다.
하지만 추후 버전에서는 삭제될 수 있고, 이경우 해당 애드온/모듈은 동작하지 않게 됩니다.
따라서 1.7에 맞게 제작하는 애드온/모듈 등은 if(!defined("__XE__")) exit(); 를 사용하시는 것이 맞습니다.