그누보드 5.4 + 나리야 0.3a 살펴보기

그누보드분해

그누보드 5.4 + 나리야 0.3a 살펴보기

Nariya 0.3a 살펴보기

 

그누보드 5.4가 한달전쯤 출시했고, 나리야0.3 알파버전이 출시된 상황입니다.

 

지난번에 언급했듯

 

그누보드 5.4의 가장 핵심기능은

짧은주소도 아닌 hook 기능이라고 보여집니다.

 

그누보드M에서도 있던것이지만, 공식적인 사이트에 적용할수있는것은 hook 기능이 아닐까 싶네요

 

그리고, 대폭변경을 시도하고 있는 아미나 1.8.x 에서 나리야(코드명인듯)로 넘어가있는 

 

아미나의 개량형 버전인 나리야에 포함된 기능들을 먼저 둘러보죠 

 

db를 살펴보니 

 

아미나에서 사용되던 요소들이 사라졌습니다.

전부다..

apms_ 로 시작하던 db가 없네요

 

이거슨.. 그누보드와 독립적으로 움직여보겠다는 시도로 보여집니다.

 

급변해도 너~무 급변한 상황인데요

 

 

시작포인트가 어딘지 찾기가 어려우실 분들을 위해.. 추척포인트를 먼저 언급하면

 

1. 테마(theme)의 사용여부를 찾습니다.

 

테마 같은경운 사용을 하게되면

 

G5_PATH/common.php 파일에서

 

//테마 설정로드 

영역이 있습니다.

여기에는

 

 

G5_THEME_PATH 값이 셋팅되면

G5_THEME_PATH.'/theme.config.php'

 

파일을 인클루드하는게 기본으로 설정되어있습니다.

 

 

아미나 후속인 나리야 테마는

빌더가 아닌 테마 식으로 구성됩니다.

 

/theme/Naniya-Basic  테마에 설정된값을 기본으로 구성하니

 

theme.config.php파일을 읽어들입니다.

 

 

그런데, 

adm 페이지에서도 

 

나리야설정이 존재하는것은 어떻게 되는것일까요?

 

 

 

후킹(Hooking) 시작

 

 작동방식이 너무나도 궁금해지죠..

 

기본적으로  index.php 파일이라면 이해를  하겠지만

그것이 아니면 구조가 달라지니..

 

theme.config.php 파일 하단에

 





// 나리야 플러그인 로드

@include_once(G5_PLUGIN_PATH.'/nariya/plugin.php');




// 나리야 테마

define('NA_THEME', 'bs3');

 

가 존재합니다.

 

어떤 설정을 한것이 아니라면(관리모드도 아닌일반페이지)

 

plugin.php 파일에서

 





// 공통 후크

include_once(NA_PLUGIN_PATH.'/hooks.php');

 

를 접근하게 됩니다.

 

hooks.php 파일에서는


class G5_NARIYA {

 

문장을 시작으로 

 

맨하단의 

$GLOBALS['g5_nariya'] = G5_NARIYA::getInstance();




를 볼수있습니다.

 

객체로의 접근


 public static function getInstance() { 

 

에서는

new self(); 라는 문장을 만나게 됩니다.


 

self() ;는 아무리 찾아도 나오지 않죠

 

위에 선언된 

G5_NARIYA 를 자체를 의미합니다.

 

그러면 이건 어떻게 접근해야 하냐면

 

객체의 생성자 함수를 지칭하게 됩니다.

PHP에서는 __construct()가 생성자입니다.

 





    public function __construct() {




$this->add_hooks();

    }

를 볼수있습니다.

 

그러면 결국 생성자는 

add_hooks(); 메소드를 실행하는겁니다.

 





public function add_hooks() {




// 공통

add_event('common_header', array($this, 'common_header'), 1, 5);




// 글

add_event('write_update_after', array($this, 'write_insert'), 1, 5);




// 댓글

add_event('comment_update_after', array($this, 'comment_insert'), 1, 5);

}

 




 

여기서 또 

add_event는 무엇인가 라는 질문에 직면합니다.

 

add_event는 PHP의 내장함수입니다.

보통은 동적함수를 생성하는 용도로 많이 사용합니다.

 

자바스크립트에서도 이벤트 리스너를 추가하거나

eval로 없던 기능을 순간 확장해서 (조합형) 사용하기 위해서 종종 사용합니다.

 

후킹은 이와 유사합니다.

 

이벤트리스너 혹은 EVAL 과 비슷하다고 개념을 잡으시면됩ㄴ디ㅏ.

 

첫번째 파라미터는 이벤트명, 두번째는 실제 내용에 해당됩니다.

 

이와같이 

 

나리야(Nariya) - 아미나 후속 - 에서는 

 

기존의 작동방식을 버리고, 

 

작동의 흐름을 일반적으로 제어하여 테마형 접근법을 사용하면서도 

작동시킬 내용은 다 포합합니다.

 

자. 그러면 다음번에는 데이타가 저장되는 방법을 찾아서 함께 다루어보도록 하겠습니다.

 

감사합니다.

 

 

0 Comments