본문 바로가기
Programming/CodeIgniter

Codeigniter matchbox를 사용해서 모듈화 하기.

by 신규하 2009. 9. 3.
codeigniter를 사용하는데, MVC모델로 되어 있지만, 그 MVC모델이 지정된 폴더에 같은 작업을 할려니 부담 스러울 때가 많습니다. 그런데 matchbox를 사용하면 이런 형태를 모듈화 해서 작업을 할 수 있게 됩니다.

- application
   - controllers
   - models
   - views


이렇던것을

- application
   - modules
      - example
         - controllers
         - models
         - views
      - example2
         - controllers
         - models
         - views


이런 식으로 나눠서 사용 할 수 있습니다. 써보니까.. 더 길어 지네요.. 더 복잡해 보이나요? -_-;
하지만, 이렇게 해서 얻어지는 장점은 각 모듈로 분리해서 작업을 해서 좀더 깔끔하게 소스를 관리 할 수 있습니다. 소스의 복잡도도 떨어 뜨릴수 있구요.

설치하기

다운로드 : http://code.google.com/p/matchbox/
위 주소로 가서 matchbox를 받아 옵니다. 지금 이 글을 포스팅 하는 시점에서는 0.9.4가 최신이라서 그걸 받아서 설치를 했습니다.

설치 방법은 허무하게 간단합니다.
압축을 풀면 나오는 config폴더와 library폴더를 복사해서 넣어 주시면 됩니다. 그리고 나서 application 폴더에 modules라는 폴더를 만드시면 됩니다. 그리고 위에 네모안에 들어 있는 같은 구조를 구성해 주시면 됩니다.

위와 같이 넣고 나서 실행을 해 보시려면,

http://www.example.com/index.php/module_name/parameter
http://www.example.com/index.php/module_controller_method/parameter

두가지를 시도해 보시면 됩니다.

아래와 같은 파일 구조가 있고,
- application
   - modules
      - example
         - controllers
             example.php
             test.php
        - views
             example_view.php
             test_view.php
             test_view2.php

example.php

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Example extends Controller {
    function __construct()
    {
        parent::Controller();
    }
   
    function index()
    {
        $this->load->module_view('example', 'example_view');
    }

    function test2()
    {
        $this->load->module_view('example', 'test_view');
    }
   
}

test.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Test extends Controller {
    function __construct()
    {
        parent::Controller();
    }
   
    function index()
    {
        $this->load->module_view('example', 'test_view');
    }
}

http://www.example.com/index.php/test2

위와 같이 같은 example.php와 test.php가 존재 한다면, 주소를 부를때,
먼저 test2.php 이라는 파일을 찾고 없으면 모듈 이름과 같은 example.php 파일에서 test2 method를 찾습니다.
그러니까.. 실제로는 /application/controllers에 파일이 들어 있을 때와 거의 비슷하게 동작을 하신다고 생각 하시면 됩니다.

그리고 설치 후 주의 하셔야 할 점은 autoload.php 설정에 language 라이브러리를 호출 하시면, 재 선언 했다고 메시지가 출력 됩니다. 기존 작업에 language를 작업 하셨다면 빼주시면 됩니다.


댓글