정보공간_1

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

IT 놀이터/Elite Member Tech & Talk

[4기 부산 김솔] Codeigniter 5

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

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

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

 



1.     Core 확장

 Codeigniter 프레임워크를 사용하여 개발하다 보면, 프레임워크에서 제공하는 코어 기능들이 진행하는 프로젝트에 맞지 않아 코드를 바꾸어야 할 경우가 생깁니다. 이 때 코어 파일을 변경하게 되면, 프레임워크를 업데이트 할 때 코어 파일들의 코드를 일일이 변경해주어야 하고 이를 위해 코드의 수정사항을 기록해두어야 하는 번거로운 작업을 해야 합니다.

 이와 같은 상황에서 유연하게 코어 파일을 수정하거나, 확장하기 위해서 개발자가 /application/ 하위에 코어를 확장해서 사용할 수 있게 기능을 제공하고 있습니다.

 



2.     Core Class

 Codeigniter Core Class 들은 공식 홈페이지에서 제공하는 매뉴얼을 통해 Benchmark, Config, Controller, Exceptions, Hooks, Input, Language, Loader, Log, Output, Router, URI, Utf8 의 클래스를 명시해놓고 있습니다. Core Class 의 경우에 다른 Class로 대체를 하거나 확장해서 사용할 수 있습니다.

 



3.     Core Class 대체

 Core Class를 대체 해서 사용 하기 위해서는 위에서 설명드린 Core Class 명과 같은 이름의 파일을 생성하고, Class를 생성하여 코드를 작성하시면 됩니다. 대체할 Core Class 파일이 존재하는 위치는 /application/core/ 가 되겠습니다.

 예로 Controller Class를 대체 해보겠습니다.

먼저 /application/core/ 의 경로에 Controller.php 파일을 생성하고, 해당 파일의 내용에 Controller Class를 선언해주시면 됩니다. Source Code를 열어보면 아래와 같습니다.

 위 그림에서 Class 명이 CI_Controller 인 것을 볼 수 있는데요, Class 선언 시 접두어로 CI_ 가 붙어야 합니다.



 

4.     Core Class 확장

 Core Class를 그대로 사용하되, 개발자가 함수를 추가한다거나 하는 작업을 할 수 있습니다.

 위와 마찬가지로 Controller Class를 확장해보도록 하겠습니다.

먼저 확장을 위한 환경설정을 해야 합니다. 환경설정을 위한 경로는 /application/config/config.php 이 되겠습니다. 해당 파일을 열어보시면

위와 같은 부분이 있을 겁니다. 개발자가 기존의 Core를 확장시켜 사용할 Class의 접두어를 정하는 부분인데, 기본값이 MY_로 지정이 되어 있으며 입맛에 따라 이 부분을 변경해서 사용하시면 됩니다.

 저는 이 부분의 접두어를 SSM_ 이라고 지정을 했습니다.

 이제 환경설정이 끝났으니, 환경설정을 한대로 Core를 확장한 Class를 만들어 보겠습니다.

확장 Class의 파일 위치는 /application/core/ 입니다. 여기서 저는 Controller를 확장할 것이기 때문에 생성한 파일 명은 SSM_Controller.php 파일이 되겠습니다. Core Class를 대체하는 것과 비슷하게 Core Class 명으로 생성하지만, 환경설정에서 설정한 접두어가 붙는 다는 점만 유의 하시면 되겠습니다.

 SSM_Controller.php 의 파일 내용은 다음과 같은 구조가 되겠습니다.



위의 코드에서 보시면 CI_Controller 라는 Core Class에서 확장해 환경설정에 지정된 접두어로 Class를 선언하고 안에 구현하고자 하는 함수를 코딩하시면 됩니다.

 Core Class를 대체하는 것과 달리 Core Class를 확장하는 것은 기존의 Core Class CI_ 로 시작하는 Class를 사용하는 것이 아닌, 환경설정에서 지정한 접두어로 시작하는 Class를 사용해야 합니다.

 위의 Controller를 확장한 것을 예로 들어 Controller를 작성해보면,



위 코드에서 보시면 Controller Class를 선언하는 부분에서 extends 뒤 부분이 CI_Controller 가 아닌 SSM_Controller 인 것을 확인 할 수 있습니다. 이 부분이 CI_Controller가 되더라도 문제가 발생하는 것은 아닙니다. SSM_Controller 로 지정하셔야 확장한 Class를 사용하실 수 있습니다.

 위와 같은 Controller를 작성해서 브라우저에서 확인을 해보시면 화면에 아무것도 표시 되지 않으실텐데요,



위와 같이 확장 Class를 작성한 이후에 브라우저에서 확인을 하시면



위 그림과 같이 표시가 될 겁니다.