* User ID : leesungmin
* Homepage : https://4880.net
* Email : imadonis@naver.com
* Following : 랩퍼투혼 whom the member is following.
* Following Count : 1people
* Followed by : 랩퍼투혼, 탑돌이 ... now follwing this member.
* Followed Count : 2people

< 빌립보서 4장 13절>
내가 주 안에서 크게 기뻐함은 너희가 나를 생각하던 것이 이제 다시 싹이 남이니 너희가 또한 이를 위하여 생각은 하였으나 기회가 없었느니라 ! 내가 궁핍하므로 말하는 것이 아니니라! 어떠한 형편에든지 나는 자족하기를 배웠노니 나는 비천에 처할 줄도 알고 풍부에 처할 줄도 알아 모든 일 곧 배부름과 배고픔과 풍부와 궁핍에도 처할 줄 아는 일체의 비결을 배웠노라! 내게 능력 주시는 자 안에서 내가 모든 것을 할 수 있느니라 !

* Document Count : 17511
* Comment Count : 82
* Document Count : 36
* Document Count : 115
* Comment Count : 123
* Document Count : 2
* Comment Count : 2
* Document Count : 1
* Comment Count : -1

CMS

  • List
  • Down
  • Up
  • Write
  • Search

XE코어 함수라이브러리 func.inc.php

부운영자 부운영자
157 0 0

clone($object)

iconv($in_charset, $out_charset, $str)

&getModule($module_name, $type = 'view', $kind = '')

&getController($module_name)

&getAdminController($module_name)

&getView($module_name)

&getMobile($module_name)

&getAdminView($module_name)

&getModel($module_name)

&getAdminModel($module_name)

&getAPI($module_name)

&getWAP($module_name)

&getClass($module_name)

executeQuery($query_id, $args = null)

executeQueryArray($query_id, $args = null)

getNextSequence()

getUrl()

getNotEncodedUrl()

getFullUrl()

getNotEncodedFullUrl()

getSiteUrl()

getNotEncodedSiteUrl()

getFullSiteUrl()

isSiteID($domain)

cut_str($string,$cut_size=0,$tail = '...')

zgap()

ztime($str)

getTimeGap($date, $format = 'Y.m.d')

getMonthName($month, $short = true)

zdate($str, $format = 'Y-m-d H:i:s', $conversion=true)

debugPrint($debug_output = null, $display_option = true, $file = '_debug_message.php')

getMicroTime()

delObjectVars($target_obj, $del_obj)

handleError($errno, $errstr, $file, $line)

getNumberingPath($no, $size=3)

url_decode($str)

removeHackTag($content)

checkXmpTag($content)

removeSrcHack($matches)

_isHackedSrcExp($style)

_isHackedSrc($src)

fixQuotation($matches)

hexrgb($hexstr)

mysql_pre4_hash_password($password)

getScriptPath()

utf8RawUrlDecode ($source)

_code2utf($num)

detectUTF8($string, $return_convert = false, $urldecode = true)

json_encode2($data)

isCrawler($agent = null)

stripEmbedTagForAdmin(&$content, $writer_member_srl)

requirePear()

 

[ 기본 함수 ]

XE 위키(Wiki)에서 SMaker, 하늘03, sol님의 설명글의 내용을 가져왔다. 함수의 쓰임새와 방법 등을 이해하는데 기초적인 자료가 된다. 지금 당장 이해할 수 없어도 일단 노트에 적어보자.(나는 전공자가 아니다...^^) 나중에 다시 찾아보기 쉽도록 정리해 두고 이해한 만큼 주석을 달아보자! (■는 위키문서에 없는 부분을 추가해 보았다.)

관련자료 : http://xe.xpressengine.net/18252055

 

모듈(Module) 관련 함수 정의 :

ModuleHandler::getModuleObject($module_name, $type)을 쓰기 쉽게 함수로 선언

// module_name은 모듈의 이름이다.

// 타입은 disp, proc, controller, class 이다.

// 종류(Kind)는 admin, null 로 구분한다.

// 반환(return)은 module instance(모듈 인스턴스)이다.

 

function &getModule($module_name, $type = 'view', $kind = '') { return ModuleHandler::getModuleInstance($module_name, $type, $kind);}

instance getController(string MODULE_NAME)

모듈의 Controller 인스턴스를 가져오기 위한 함수입니다.

function &getController($module_name) { return getModule($module_name, 'controller'); }

// document.controller.class 인스턴스를 갖고 오고 싶다면 $oDocumentController = &getController('document');

instance getAdminController(string MODULE_NAME)

모듈의 Admin Controller 인스턴스를 가져오기 위한 함수입니다.

function &getAdminController($module_name) { return getModule($module_name, 'controller','admin'); }

// documentAdminController 인스턴스를 갖고 오고 싶다면 $oDocumentAdminController = &getAdminController('document');

instance getView(string MODULE_NAME)

모듈의 View 인스턴스를 가져오기 위한 함수입니다.

function &getView($module_name) { return getModule($module_name, 'view'); }

// rssView 인스턴스를 갖고 오고 싶다면 $oRssView = &getView('rss');

instance getMobile(string MODULE_NAME) ■

모듈의 Mobile 인스턴스를 가져오기 위한 함수입니다.

function &getMobile($module_name) { return getModule($module_name, 'mobile'); }

instance getAdminView(string MODULE_NAME)

모듈의 Admin View 인스턴스를 가져오기 위한 함수입니다.

function &getAdminView($module_name) { return getModule($module_name, 'view','admin'); }

// adminAdminView 인스턴스를 갖고 오고 싶다면 $oAdminAdminView = &getAdminView('admin');

instance getModel(string MODULE_NAME)

모듈의 Model 인스턴스를 가져오기 위한 함수입니다.

function &getModel($module_name) { return getModule($module_name, 'model'); }

// documentModel 인스턴스를 갖고 오고 싶다면 $oDocumentModel = &getModel('document');

instrance getAdminModel(string MODULE_NAME)

모듈의 Admin Model 인스턴스를 가져오기 위한 함수입니다.

function &getAdminModel($module_name) { return getModule($module_name, 'model','admin'); }

// documentAdminModel 인스턴스를 갖고 오고 싶다면 $oDocumentAdminModel = &getAdminModel('document');

instance getAPI(string MODULE_NAME)

모듈의 API 인스턴스를 가져오기 위한 함수입니다.

function &getAPI($module_name) { return getModule($module_name, 'api'); }

// boardAPI 인스턴스를 갖고 오고 싶다면 $oBoardAPI = &getAPI('board');

instance getWAP(string MODULE_NAME)

모듈의 WAP 인스턴스를 가져오기 위한 함수입니다.

function &getWAP($module_name) { return getModule($module_name, 'wap'); }

// boardWAP 인스턴스를 갖고 오고 싶다면 $oBoardWAP = &getWAP('board');

instance getClass(string MODULE_NAME)

모듈의 Class 인스턴스를 가져오기 위한 함수입니다.

function &getClass($module_name) { return getModule($module_name, 'class'); }

// documentClass 인스턴스를 갖고 오고 싶다면 $oDocumentClass = &getClass('document');

 

 

DB 관련 함수 정의 :

Object executeQuery(string QUERY_ID, stdClass PARAM)

/** * @brief DB::executeQuery() 의 alias * @param query_id 쿼리 ID ( 모듈명.쿼리XML파일 ) * @param args object 변수로 선언된 인자값 * @return 처리결과 **/ function executeQuery($query_id, $args = null) { $oDB = &DB::getInstance(); return $oDB->executeQuery($query_id, $args); }

XML Query를 실행하기 위한 함수입니다. 결과는 Object class의 객체로 return 됩니다. 쿼리 실패는 Object::toBool()이 false일 경우이고 true라면 쿼리는 정상적으로 실행이 된 것을 의미합니다. select문의 결과 데이터는 Object::data 변수에 담겨져 return 됩니다.

Object executeQueryArray(string QUERY_ID, stdClass PARAM)

/** * @brief DB::executeQuery() 의 결과값을 무조건 배열로 처리하도록 하는 함수 * @param query_id 쿼리 ID ( 모듈명.쿼리XML파일 ) * @param args object 변수로 선언된 인자값 * @return 처리결과 **/ function executeQueryArray($query_id, $args = null) { $oDB = &DB::getInstance(); $output = $oDB->executeQuery($query_id, $args); if(!is_array($output->data) && count($output->data) > 0){ $output->data = array($output->data); } return $output; }

executeQuery()와 기능이 같으나 select 시 Object::data 변수에 결과 row가 1개라도 array로 반환됩니다.

int getNextSequence()

/** * @brief DB::getNextSequence() 의 alias * @return big int **/ function getNextSequence() { $oDB = &DB::getInstance(); return $oDB->getNextSequence(); }

다음 Sequence 번호를 가져오기 위한 함수 입니다. XE 에서는 내부적으로 하나의 Sequence 를 쓰는데요 member_srl, module_srl, document_srl 등 모든 키는 다 이 함수로 받아 설정됩니다. document_srl이 +1씩 순차적으로 늘어나지 않지만 이점이 많이 XE에서는 이러한 방법으로 Sequence를 쓰고 있습니다.

 

 

URL 관련 함수 정의 :

string getUrl(['',] string KEY, string VALUE [,string KEY, string VALUE ...])

/** * @brief Context::getUrl()를 쓰기 쉽게 함수로 선언 * @return string * * getUrl()은 현재 요청된 RequestURI에 주어진 인자의 값으로 변형하여 url을 리턴한다. * 1. 인자는 (key, value)... 의 형식으로 주어져야 한다. * ex) getUrl('key1','val1', 'key2', '') : key1, key2를 val1과 '' 로 변형 * 2. 아무런 인자가 없으면 argument를 제외한 url을 리턴 * 3. 첫 인자값이 '' 이면 RequestUri에다가 추가된 args_list로 url을 만듬 **/ function getUrl() { $num_args = func_num_args(); $args_list = func_get_args();

if(!$num_args) return Context::getRequestUri();

return Context::getUrl($num_args, $args_list); }

Url을 만드는 함수 입니다.

현재 요청된 RequestURI에 주어진 인자의 값으로 변형하여 url을 리턴을 하고 첫 인자값이 '' 이면 RequestUri에다가 추가된 args_list로 url을 만듭니다.

string getFullUrl(['',] string KEY, string VALUE [,string KEY, string VALUE ...])

/** * @brief getUrl()의 값에 request uri를 추가하여 reutrn * full url을 얻기 위함 **/ function getFullUrl() { $num_args = func_num_args(); $args_list = func_get_args(); $request_uri = Context::getRequestUri(); if(!$num_args) return $request_uri;

$url = Context::getUrl($num_args, $args_list); if(!preg_match('/^http/i',$url)){ preg_match('/^(http|https):\/\/([^\/]+)\//',$request_uri,$match); return substr($match[0],0,-1).$url; } return $url; }

http:// 로 시작하는 Url을 만드는 함수입니다.

string getNotEncodedFullUrl(['',] string KEY, string VALUE [,string KEY, string VALUE ...])

function getNotEncodedFullUrl() { $num_args = func_num_args(); $args_list = func_get_args(); $request_uri = Context::getRequestUri(); if(!$num_args) return $request_uri;

$url = Context::getUrl($num_args, $args_list); if(!preg_match('/^http/i',$url)){ preg_match('/^(http|https):\/\/([^\/]+)\//',$request_uri,$match); $url = Context::getUrl($num_args, $args_list, null, false); return substr($match[0],0,-1).$url; } return $url; }

encode 되지 않은 Url을 만드는 함수입니다. getFullUrl()와 기능이 같습니다.

string getSiteUrl(string DOMAIN, ['',] string KEY, string VALUE [,string KEY, string VALUE ...])

/** * @brief Context::getUrl()를 쓰기 쉽게 함수로 선언 * @return string * * getSiteUrl()은 지정된 도메인에 대해 주어진 인자의 값으로 변형하여 url을 리턴한다\\n * 첫 인자는 도메인(<http://등이> 제외된)+path 여야 함. **/ function getSiteUrl() { $num_args = func_num_args(); $args_list = func_get_args(); if(!$num_args) return Context::getRequestUri(); $domain = array_shift($args_list); $num_args = count($args_list); return Context::getUrl($num_args, $args_list, $domain); }

가상사이트를 위한 Url을 만드는 함수입니다. 첫 인자 DOMAIN에는 도메인 또는 vid를 받습니다.

string getNotEncodedSiteUrl(string DOMAIN, ['',] string KEY, string VALUE[,string KEY, string VALUE...])

function getNotEncodedSiteUrl() { $num_args = func_num_args(); $args_list = func_get_args(); if(!$num_args) return Context::getRequestUri(); $domain = array_shift($args_list); $num_args = count($args_list); return Context::getUrl($num_args, $args_list, $domain, false); }

encode 되지 않은 URL을 만드는 함수입니다. getSiteUrl()와 기능이 같습니다.

string getFullSiteUrl(string DOMAIN, ['',] string KEY, string VALUE [,string KEY, string VALUE ...])

/** * @brief getSiteUrl()의 값에 request uri를 추가하여 reutrn * full url을 얻기 위함 **/ function getFullSiteUrl() { $num_args = func_num_args(); $args_list = func_get_args(); $request_uri = Context::getRequestUri(); if(!$num_args) return $request_uri; $domain = array_shift($args_list); $num_args = count($args_list); $url = Context::getUrl($num_args, $args_list, $domain); if(!preg_match('/^http/i',$url)){ preg_match('/^(http|https):\\/\\/([^\\/]+)\\//',$request_uri,$match); return substr($match[0],0,-1).$url; } return $url; }

가상사이트를 위한 http:// 로 시작하는 Url을 만드는 함수입니다.

string isSiteID(string DOMAIN) ■

/** * @brief 가상사이트의 Domain이 url형식인지 site id인지 return **/ function isSiteID($domain) { return preg_match('/^([a-z0-9\\_]+)$/i', $domain); }

string cut_str(string STRING, int CUT_SIZE, string TAIL)

/** * @brief 주어진 문자를 주어진 크기로 자르고 잘라졌을 경우 주어진 꼬리를 담 * @param string 자를 원 문자열 * @param cut_size 주어진 원 문자열을 자를 크기 * @param tail 잘라졌을 경우 문자열의 제일 뒤에 붙을 꼬리 * @return string **/

문자열을 일정한 길이에 맞게 잘라서 뒤에 꼬리를 붙여주는 함수입니다.

int ztime(string STR)

YYYYMMDDHHIISS 형식의 시간값을 unix time으로 변경 // str : YYYYMMDDHHIISS 형식의 시간값 // return : int

string getTimeGap(string DATE, string FORMAT)

YmdHis의 시간 형식을 지금으로 부터 몇분/몇시간전인지를 문자열로 출력하는 함수입니다. // YmdHis의 시간 형식을 지금으로 부터 몇분/몇시간전, 1일 이상 차이나면 format string return

string getMonthName(int MONTH, bool SHORT)

월 이름을 출력하는 함수입니다. // 예) 1월 → January, 7월 → July

string zdate(string STR, string FORMAT, bool CONVERSION)

/** * @brief YYYYMMDDHHIISS 형식의 시간값을 원하는 시간 포맷으로 변형 * @param string|int str YYYYMMDDHHIISS 형식의 시간 값 * @param string format php date()함수의 시간 포맷 * @param bool conversion 언어에 따라 날짜 포맷의 자동변환 여부 * @return string **/

YYYYMMDDHHIISS 형식의 시간값을 원하는 시간 포맷으로 만들어 주는 함수입니다.

string getMicroTime() ■

function getMicroTime() { list($time1, $time2) = explode(' ', microtime()); return (float)$time1 + (float)$time2; }

// microtime() return

debugPrint(mixed OBJECT)

디버깅을 하기 위한 함수 입니다. XE_ROOT/config/config.inc.php 파일에 DEBUG 값이 1이상으로 정의되어 있어야 합니다. DEBUG_OUTPUT 값에 따라 결과값을 받을 방법을 선택할 수 있습니다.

  • 0 : files/_debug_message.php 에 연결하여 출력 * 1 : HTML 최하단에 주석으로 출력 (Response Method가 HTML 일 때) * 2 : Firebug 콘솔에 출력 (PHP >= 5.2.0. Firebug/FirePHP 플러그인 필요)

delObjectVars($target_obj, $del_obj) ■

/** * @brief 첫번째 인자로 오는 object var에서 2번째 object의 var들을 제거 * @param target_obj 원 object * @param del_obj 원 object의 vars에서 del_obj의 vars를 제거한다 * @return object **/

handleError($errno, $errstr, $file, $line) ■

/** * @brief php5 이상에서 error_handing을 debugPrint로 변경 * @param errno * @param errstr * @return file * @return line **/ function handleError($errno, $errstr, $file, $line) { if(!DEBUG) return; $errors = array(E_USER_ERROR, E_ERROR, E_PARSE); if(!in_array($errno, $errors)) return;

$output = sprintf("Fatal error : %s - %d", $file, $line); $output .= sprintf("%d - %s", $errno, $errstr);

debugPrint($output); }

getNumberingPath($no, $size=3) ■

/** * @brief 주어진 숫자를 주어진 크기로 recursive하게 잘라줌 * @param no 주어진 숫자 * @param size 잘라낼 크기 **/ function getNumberingPath($no, $size=3) { $mod = pow(10, $size); $output = sprintf('%0'.$size.'d/', $no%$mod); if($no >= $mod) $output .= getNumberingPath((int)$no/$mod, $size); return $output; }

url_decode($str) ■

/** * @brief 한글이 들어간 url의 decode **/ function url_decode($str) { return preg_replace('/%u([[:alnum:]]{4})/', '&#x\\1;',$str); }

string removeHackTag(string CONTENT)

/** * @brief 해킹 시도로 의심되는 코드들을 미리 차단 **/ function removeHackTag($content) { // 특정 태그들을 일반 문자로 변경 $content = preg_replace('/<(\/?)(iframe|script|meta|style|applet|link|base|html|body)/is', '<$1$2', $content);

/** * 이미지나 동영상등의 태그에서 src에 관리자 세션을 악용하는 코드를 제거 * - 취약점 제보 : 김상원님 **/ $content = preg_replace_callback("!<(/?)([a-z]+)(.*?)>!is", removeSrcHack, $content);

// xmp tag 확인 및 추가 $content = checkXmpTag($content);

return $content; }

해킹 시도로 의심될만한 코드들을 걸러주는 함수입니다.

checkXmpTag($content)

// xmp tag 확인 및 닫히지 않은 경우 추가

removeSrcHack($matches)

// xmp tag 정리

// src값에 module=admin이라는 값이 입력되어 있으면 이 값을 무효화 시킴

fixQuotation($matches)

// attribute의 value를 " 로 둘러싸도록 처리하는 함수

bool isCrawler(string AGENT)

function isCrawler($agent = null) { if(!$agent) $agent = $_SERVER['HTTP_USER_AGENT']; $check_agent = array('bot', 'spider', 'google', 'yahoo', 'daum', 'teoma', 'fish', 'hanrss', 'facebook'); $check_ip = array( '211.245.21.11*' /* mixsh */ );

foreach($check_agent as $str) { if(stristr($agent, $str) != FALSE) return true; }

$check_ip = '/^('.implode($check_ip, '|').')/'; $check_ip = str_replace('.', '\.', $check_ip); $check_ip = str_replace('*', '.+', $check_ip); $check_ip = str_replace('?', '.?', $check_ip);

if(preg_match($check_ip, $_SERVER['REMOTE_ADDR'], $matches)) return true;

return false; }

접속자의 User Agent와 IP를 검사하여 로봇 여부를 확인하는 함수입니다.

stripEmbedTagForAdmin(&$content, $writer_member_srl) ■

function stripEmbedTagForAdmin(&$content, $writer_member_srl) { if(!Context::get('is_logged')) return; $oModuleModel = &getModel('module'); $logged_info = Context::get('logged_info');

if($writer_member_srl != $logged_info->member_srl && ($logged_info->is_admin == "Y" || $oModuleModel->isSiteAdmin($logged_info)) ) { if($writer_member_srl) { $oMemberModel =& getModel('member'); $member_info = $oMemberModel->getMemberInfoByMemberSrl($writer_member_srl); if($member_info->is_admin == "Y") { return; } } $security_msg = "<div style='border: 1px solid #DDD; background: #FAFAFA; text-align:center; margin: 1em 0;'><p style='margin: 1em;'>".Context::getLang('security_warning_embed')."</p></div>"; $content = preg_replace('/<object[^>]+>?(.?<\/object>)?/is', $security_msg, $content); $content = preg_replace('/<embed[^>]+>?(\s<\/embed>)?/is', $security_msg, $content); $content = preg_replace('/<img[^>]+editor_component="multimedia_link"[^>]>?(\s<\/img>)?/is', $security_msg, $content); }

return; }

부운영자 부운영자
93 Lv. 785830/795240P

< 빌립보서 4장 13절>
내가 주 안에서 크게 기뻐함은 너희가 나를 생각하던 것이 이제 다시 싹이 남이니 너희가 또한 이를 위하여 생각은 하였으나 기회가 없었느니라 ! 내가 궁핍하므로 말하는 것이 아니니라! 어떠한 형편에든지 나는 자족하기를 배웠노니 나는 비천에 처할 줄도 알고 풍부에 처할 줄도 알아 모든 일 곧 배부름과 배고픔과 풍부와 궁핍에도 처할 줄 아는 일체의 비결을 배웠노라! 내게 능력 주시는 자 안에서 내가 모든 것을 할 수 있느니라 !

ReportShareScrap

Comment 0

Comment Write
WYSIWYG

Report

"님의 댓글"

Are you sure you want to report this comment?

Comment Delete

"님의 댓글"

I want to Are you sure you want to delete?

Share

Permalink
  • Module Admin Controller for Delete 모듈 삭제와 컨트롤러(Controller) 모듈(mid)의 삭제는 모듈의 고유 식별 번호($module_srl)을 확인하고 module 테이블에서 해당 식별 번호를 삭제하는 것으로 끝난다. 여기에서...
  • Module Admin Controller for Insert/Update 모듈 입력/수정과 컨트롤러(Controller) 예제로 만들고 있는 example 모듈에서 새로운 모듈(mid)을 추가하고 수정할 수 있는 액션과 그에 따른 진행 과정을 그린 설계도이...
  • 모듈 확장과 모델(Model) 관리자를 위한 백 엔드 뷰(View)가 실행되면 관리자-인덱스로 설정했던 dispExampleAdminList 액션이 작동하고 그 진행과정을 설명한 그림이다. 또한 앞으로 만들게 될 관리자 목록 보기를 ...
  • Front and back ends 프론트 엔드(front-end)와 백 엔드(back-end)는, 사용자가 접근하는 영역을 말하는데 이때 사용자는 사람이 아닌 프로그램이 될 수도 있다. 예를 들어 컴퓨터 OS의 그래픽 파일 관리자는 컴퓨터...
  • MVC 구조의 이해
    부운영자 Views 68 20.08.13.14:45
    Model-View-Controller XE Core는 모델-뷰-컨트롤러(Model-View-Controller) 개발 패턴에 기반한다. 이것을 줄여서 MVC 구조라고 말한다. 소프트웨어 공학에서 프로그램의 설계는 건축(architecture)과 같다. 시스템...
  • 폼(form)과 DB
    부운영자 Views 139 20.08.13.14:41
    Form & DB XE 모듈을 이해하기 위한 기초 과정으로 폼(form)의 동작 방식을 살펴보자. 모듈은 결론적으로 폼과 DB의 관계이다. 모듈은 자신이 관리하는 테이블을 한두개 이상 가지고 있고 이것을 다루기 위해 폼을 사...
  • XE의 URL 규칙
    부운영자 Views 94 20.08.13.14:40
    URLs on XE XE에서 생성한 URL 은 깔끔하고 검색엔진에서 색인되기 좋은 구조이다. XE는 일반적인 쿼리스트링 기반의 URL이 아니라 세그먼트 기반의 URL을 사용한다. 쿼리스트링(Query string) URL이란, 다음과 같이 ...
  • 모듈의 기본 이해
    부운영자 Views 26 20.08.13.14:37
    The Story of XE Modules XE코어의 모듈 이야기... 1. 백엔드 어드민(Admin) 뷰(View) 구현을 위한 example 모듈 만들기 2. 프론트 엔드 뷰(View) 구현을 위한 BOOK 모듈 만들기 3. v1.5 룰셋(ruleset)과 BOOKMARK 모...
  • XE 모듈
    부운영자 Views 19 20.08.13.14:35
    The Story of XE Modules XE코어의 모듈 이야기... 1. 백엔드 어드민(Admin) 뷰(View) 구현을 위한 example 모듈 만들기 2. 프론트 엔드 뷰(View) 구현을 위한 BOOK 모듈 만들기 3. v1.5 룰셋(ruleset)과 BOOKMARK 모...
  • 반복문 loop
    부운영자 Views 45 20.08.13.00:44
    XE Template Syntax 반복문 loop 주어진 조건에 따라 필요한 내용을 반복해서 출력해야 할 때 반복문(루프/loop)을 사용한다. 1. 반복문의 이해 반복문은 컴퓨터가 만들어지면서 가장 먼저 시도된 증조 할아버지뻘 되...
  • 조건문 IF
    부운영자 Views 38 20.08.13.00:42
    XE Template Syntax 주어진 조건에 따라 필요한 내용을 문맥에 알맞게 출력하거나 배제할 때 조건문을 사용한다. 1. IF 문 IF 조건문은 PHP의 IF 조건문과 동일하고 "if, elseif, else, end"와 "조건식"으로 이루어져...
  • 파일 포함 include
    부운영자 Views 64 20.08.13.00:41
    XE Template Syntax XE 템플릿 스킨의 HTML 문서 안으로 외부 파일을 불러와 포함시키기 위한 문법이다. 파일 포함 문법에서는 불러 들이고자 하는 외부 파일의 경로 설정을 상대 경로로 표시한다. 즉 HTML 문서의 자...
  • 기본 문법 default
    부운영자 Views 81 20.08.13.00:40
    XE Template Syntax 1. 변수 PHP에서 변수를 다루는 것과 동일한 방법으로 XE 템플릿 안에서 변수를 정의하고 출력할 수 있다. 변수를 나타내는 문자열 앞에는 달러($) 기호를 붙여 사용하며 변수명은 대소문자를 구...
  • XE 템플릿 문법의 이해
    XE Template Syntax 템플릿(template)이란 붕어빵을 만드는 틀로 비유된다. 같은 모양, 같은 크기의 객체(object)를 만들기 쉽다. 프로그래밍 언어에서 템플릿 구문은 초등학교 시절의 플라스틱 모형자를 생각하면 이...
  • logged_info
    부운영자 Views 118 20.08.13.00:37
    $logged_info XE에 접근하면 XE는 항상 방문자의 로그인 여부를 우선 먼저 확인하게 된다. 이때 사용하는 변수가 $is_logged 와 $logged_info 이다. Context.class.php 파일 137라인을 참고해 보면 member 모듈의 mem...
  • getUrl()
    부운영자 Views 157 20.08.13.00:34
    getUrl() XE 레이아웃에 많이 쓰이는 getUrl() 함수이다. "getUrl()은 현재 요청된 RequestURI에 주어진 인자의 값으로 변형하여 url을 리턴한다."고 설명되어 있다. 또한 인자는 (key, value)... 의 형식으로 주어져...
  • Context.class.php
    부운영자 Views 97 20.08.13.00:30
    요청 인자(request arguments), 환경 변수(environment variables)와 같은 모든 컨텍스트(Context)를 관리 Context::methodname()로 호출할 수도 있고 정적 객체로도 호출할 수 있는 사용하기 쉬운 이중 방식 구조를 ...
  • Object.class.php
    부운영자 Views 68 20.08.13.00:29
    XE 모듈 사이의 객체 인스턴스를 전달하는 기본 클래스(데이터를 주고 받기 위한 클래스) 모든 모듈은 객체(Object)를 상속한다. 객체(Object)의 error, message, variables 를 이용하여 통신을 하게 된다 Object 함...
  • 함수라이브러리 func.inc.php
    clone($object) iconv($in_charset, $out_charset, $str) &getModule($module_name, $type = 'view', $kind = '') &getController($module_name) &getAdminController($module_name) &getView($module_name) &getMobi...
  • 환경설정 config.inc.php
    XE의 버전 및 개발자용 디버깅 설정이 저장된 파일 XE가 기본적으로 사용하는 함수라이브러리 func.inc.php 파일과 클래스(class)파일을 시작페이지 index.php 파일로 가져간다 define('ZBXE_VERSION', '1.4.5.7'); X...