[HOOK] 먹는건가요? > 그누5.4포럼

그누5.4포럼

그누보드 5.4 버전 사용자 포럼 소모임 게시판 입니다.

[HOOK] 먹는건가요? 정보

[HOOK] 먹는건가요?

본문

[HOOK] 먹는건가요?

 

이전 등록한글을 읽어봤더니...

뭔가 중요한게 빠져 있더군요

 

HOOK을 다들 알고 계실거라고 생각했습니다.

 

이게 왜 때문이냐하면 저같은 무지랭이도 알고 있었기 때문이죠 -_-;;;

(이거 순전히 예전 워드프레스 개발 경험이 있기 때문입니다.)

 

자 그럼 HOOK은 뭐하는 것일까요?

1935446354_1557462527.2651.jpg

 

말은 근사하게 했지만 솔직하게 저도 잘 알진 못합니다. -_-;;

 

자 일단 이 훅이란걸 설명하려면 절차적 프로그래밍... 이라는

생전 듣도보도 못한 말을 이해해야 합니다. 이게 뭐냐하면 

아마 제 나이때분들이라면 컴을 처음 접할때 basic이라는것을 직접적이나

간접적으로 접해보셨을 수 있을겁니다.

 

이 Basic이란넘은 프로그램의 행을 널뛰기 뛰듯 뛰어갈 수 있습니다.

정확한 명령어 인지는 기억은 없지만 

goto_line('행수') 뭐 이런게 있었던거 같습니다. 이게 뭐냐면 

한참 순차적으로 프로그램을 읽다가 라인을 갈아타서 그쪽먼저 실행하다 다시 돌아옵니다.

이게 php 에서는 불가능하고   (된답니다 - 3-) 그래서 소스 중간을 훅하고 끼워넣는 겁니다.

 

 

자 그럼 셈플을 하나 보고 가시겠습니다.

 

add_event('pr_hooks', 'pr_ex', 10, 0);
function pr_ex(){
    global $pr_test;
    $pr_test = 'test';
}

$pr_test = '테스트';
run_event('pr_hooks');
echo $pr_test;

 

자 이런 상황에서 해당 add_event()의 함수를 extend쪽에서 실행한다고 가정해 보겠습니다.

아 또 extend가 들먹여 지네요 -_- 이거 그냥 incluide라고 생각하세요

 

자 그럼 해당 소스를 실행하다 $pr_test라는 변수를 선언합니다.

그리고 훅을 달죠 그리고 해당 $pr_test를 호출해 주고

add_event()를 이용해 해당 변수를 초기화 해주었습니다.

 

이해가 좀 되시나요? 어떻게 활용을 해야하는지???

 

자 그럼 해당 게시판소스에서 검색을 해야한다고 생각해보죠

냑에서 제공하는 여분필드외에 커스텀으로 뭔가 개발을 했고 그 필드를 검색해야 한다고 상정해봅니다

그럼 $where절 정도의 변수에 핻아 검색조건이 들어갈테고 이건 스킨으로 해결이 안됩니다.

그럼 원본소스를 건들이거나 아예 다시 만들거나 해야하는데 이때 HOOK을 사용하면 됩니다.

물론 "냑"에서 개발을 먼저 그렇게 해줘야 합니다 -_-;;; 훅을 넣어줘야 하는거죠

 

그래서 $where절을 훅으로 변경해주면 원본 소스를 수정 할 필요가 없어지는겁니다.

 

뭔가 장황하게 떠들긴 하는데 이해가 되시려나 모르겟습니다.

일명 개구리 올챙이적 생각 못한다고

이게 한번 이해를 해버리면 그냥 당연한게 되어 버려서 설명이 힘들더군요

 

뭔가 이해가 안되신다면 댓글 달아주시면 다른 예제를 생각해 보겠습니다.

 

 

추천
3

댓글 8개

https://www.php.net/manual/en/control-structures.goto.php
개인적으로 안티패턴이라 쓰지 않긴 하지만 php도 goto가 있긴 합니다 ㅎㅎ
"절차적 프로그래밍... 이라는 생전 듣도보도 못한 말을 이해해야 합니다."

집중해서 읽다가 ↑요 문장에서 마상이 훅 들어왔네요. ㅠㅠ
저희 세대는 거의 절차적 프로그래밍을 초등학교 구구단처럼 배우고 시작했다는... ㅋㅋ
제 또래는 VB하면서 OOP를 처음 접한 분들 많을 걸요? ㅎㅎ
옛날옛적, 그러니까 10, 20, 30 식으로 행번호 붙이던 베이직 시절에 GOSUB라고 있었습니다. 이걸 만나면 서브루틴으로 건너뛰었다가 RETURN까지 실행되면 GOSUB이 있던 곳으로 다시 돌아와서 실행하고 그랬죠.

설명과 예제를 잘 보니 워드프레스 테마 짤 때 function.php에서 많이 썼던 방식이네요. 그게 HOOK인줄은 모르고 썼는데 비슷한 방식이었을줄은.... 다행히 적응이 어렵지 않을 것 같습니다.
요즘 계속 hook을 바라보고 있는데 본문의 예제 보니까 똭~ 이해가...
...
절반은 되는 것 같습니다. 베이직 이야기 하니까 조금 더 와닿았네요.
감사합니다 ^^
전체 28 |RSS
그누5.4포럼 내용 검색

회원로그인

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