정보공간_1

[4기 부산 김솔] Codeigniter 4 본문

IT 놀이터/Elite Member Tech & Talk

[4기 부산 김솔] Codeigniter 4

알 수 없는 사용자 2013. 12. 1. 03:02

안녕하세요. 부산 멤버십 22-1기 김솔입니다.

이번에는 PHP 기반의 프레임워크인 Codeigniter에 대한 네번째 글을 써보려 합니다.

 

1.     Hooks

Hook 기능은 프레임워크의 Core를 건드리지 않고도 프레임워크의 동작 순서의 중간중간에 개발자의 코드를 실행할 수 있도록 해주는 역할을 하고 있습니다. 이 때 Hook 기능을 통해서 관여하고자 하는 위치는 첫번째 글에서 설명드린 Codeigniter의 동작개념도와 동일하다고 보시면 됩니다.




 

2.     환경설정

 Hook 기능은 프레임워크 기본값으로 비활성화 상태가 되어 있습니다. 그래서 별도로 사용하고자 할 경우 Hook 기능을 활성화 해주어야 합니다. 활성화를 하는 방법은 /application/config/config.php 파일을 수정해야 하며, 수정하는 내용은


위와 같은 코드를 찾으신 후, 값을 false에서 true로 변경해주시면 됩니다.

 이제 환경설정을 통해 Hook 기능을 활성화 시켰습니다. 이제 Hook 정의를 해보도록 하겠습니다.

 


3.     Hook 정의

 Hook 정의를 하는 파일의 위치는 /application/config/hooks.php 입니다. Hook 정의의 규칙은

           $hook[‘Hook 포인트’] = array(환경설정);

으로 정의 하게 됩니다. 간단하게 Hook 정의를 해보면



와 같이 정의를 할 수 있습니다. Hook을 적용하고자 하는 Hook Point에 정의되는 Array를 살펴보면 class, function, filename, filepath, param 이 있습니다. 이 값들에 대해 알아보면

Hook point pre_controller 이고, 이 때 실행될 함수는 MyClass 란 이름을 가진 클래스의 MyFunction 이란 이름을 가진 함수입니다. 이 클래스와 함수는 MyClass.php 란 파일에 선언되어 있고, MyClass.php 란 파일은 /application/hooks/ 란 경로에 존재합니다. 마지막으로 이 MyFunction 이란 함수에 파라미터로 params를 넘겨줍니다.

 위 와 같이 Hook 정의를 했다면, 실제로 정의한대로 Hook 파일을 작성을 해야 합니다.

 



4.     Hook 작성

 Hook 작성하는 방법은 Hook을 정의한 내용 그대로를 작성하시면 됩니다.




위에서 정의한 내용을 토대로 파일을 작성해본다면



이 되겠습니다. 물론, Myfunction 안의 내용은 필요한 코드가 적용되어야 겠습니다.

 



5.     Controller에 적용

 Hook을 사용할 준비는 모두 끝이 났습니다. 이제 Hook을 적용할 Controller를 하나 생성해보겠습니다.




위와 같은 간단한 Controller를 생성하고 브라우저에서 확인을 해보면,




그림과 같이 출력이 되는 것을 확인할 수 있습니다.

그럼, 여기에 Hook 기능을 사용해보겠습니다.

먼저, Hook point를 지정하고 Hook을 정의합니다.


 

그리고, 정의한 Hook의 내용대로 파일을 작성합니다.




이제 Hook 작성이 완료되었으니, 브라우저에서 확인을 해보면



한 줄이 추가되어 출력되는 것을 볼 수 있습니다.

Hook pointpost_controller_constructor 로 지정을 하였기 때문에, Construct 이후에 정의한 Hook이 실행되고, Controller index 함수의 순으로 동작하는 것을 볼 수 있습니다.

 



6.     Hook point 확인

 Hook의 사용방법을 알아보았고, 마지막으로 Hook point를 확인해보도록 하겠습니다. 처음에 언급한 Codeigniter의 흐름도와 비교하시면서 보시면 도움이 될 것 같습니다.



 먼저, 위에서 작성한 /application/config/hooks.php 파일의 내용을 수정해서 아래의 그림과 같이 변경을 해보겠습니다.




 위와 같이 작성한 내용을 적용하고 브라우저에서 확인을 해보면,




와 같은 결과를 보여줍니다.

Hook point에 설명되어진 대로 Codeigniter의 흐름도에 맞게 적절한 순서로 화면에 출력이 되어진 것을 확인 할 수 있습니다.

 Hook 기능을 통해 Controller를 통해 구현하기 까다로운 Logic 을 보다 깔끔하게 구현할 수 있습니다.