TIP게시판

제목 모듈단위 개발시 설치,업데이트,삭제 허접한 구현!
글쓴이 방문넷 작성시각 2014/09/22 02:32:13
댓글 : 2 추천 : 0 스크랩 : 1 조회수 : 12653   RSS
필독 HMVC가 설치된 코드이그나이터에만 적용 가능한 방법입니다.
HMVC :https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc

------------------------------------------------------------------------------------------
지인의 공개한 웹 프로그램 코드를 보다가 괜찮은 방법이기에 코드이그나이터로 나름
흉내내보았습니다. 이름하여 모듈 설치 및 삭제 흉내내기! 이름만 이렇지
모듈 파일을 자동으로 설치하고 삭제하는게 아닙니다. ㅎㅎ;;;;;;;;;;;;;;;;

보통 작업들 하실때 modules 폴더에 모듈을 업로드하고 적용할때 어려움이 없지만 디비를 활용하는거라면
스키마 넣기 정말 짜증날때가 있습니다. 그래서 코드이그나이터의 내장된 기능을 활용하여 마이그레이션이
됬는지 안됬는지를 체크하여 스키마 생성 및 삭제를 할수있게끔 코딩해보았습니다. 이렇게 활용하다보면 
웬지 XE의 모듈관리처럼 보이기에 웬지 뿌듯함이 느껴집니다(저만 뿌듯할수도있으니 오해 금지!)
완벽한 소스보단 이렇게도 할수있다라는 것만 맛보시면 되겠습니다.
일단 업로드 한 파일을 받아주세요 설명이 조금 길어질꺼같습니다.

설치 : http://도메인/모듈이름/install
삭제 : http://도메인/모듈이름/uninstall
업데이트 : http://도메인/모듈이름/version/버전(숫자)

이런식으로 저는 현재 작업을 진행중입니다. 마지막에 버전 숫자의 경우는 마이그레이션을 이용하다보니
제가 어떤 필드를 생성했는지 일종의 히스토리 개념으로 쓸수있겠더라구요 그래서 저렇게 작업 하였습니다.

폴더가 드럽게 많은데 예제로 급히 작성하다보니 좀 디렉토리가 지저분해보이긴하네요... 그래두 설명들어가겠습니다!
--------------------------------------------------------------------------------------------
일단 셋팅 부분입니다.

config 폴더를 보시면 migration.php 파일이있는데 이건 굳이 건드릴 필요가없습니다 저대로 냅두면됩니다.
libraries 폴더를 보시면 MY_Migration.php 파일이 있습니다 이것을 application/libraries 폴더로 이동시켜주세요.

자 그럼 셋팅은 끝났습니다.

Controllers 폴더에 보시면 member.php 를 들여다 봐주세요(예제 파일입니다.);

코어 확장을 안하신분은

MY_Controller 를 CI_Controller로 변경해주세요.
--------------------------------------------------------------------------------------------
설치 : http://도메인/모듈이름/install
로 들어가게되면 일단 마이그레이션 라이브러리 로드와 동시에 데이터베이스에 migrations 테이블이있는지 검사합니다.

없으면 생성을 하고 바로 [모듈명 / 버전명]으로 데이터를 넣어줍니다.

migrations 테이블이 있으면  [모듈명 / 버전명]으로 데이터를 넣어줍니다.

만약에 모듈폴더/migrations 안에 001_모듈명.php 파일이 없으면 작동이 안될수도있습니다. 따로 에러 처리를 안했습니다.

최종적으로 설치완료가 뜨고 난뒤 데이터베이스를 확인하면 migrations 테이블과 제가 미리 001_모듈명.php 에 짜둔 

테이블이 디비에 들어가신걸 확인 하실수있습니다.

설치된 상태에서 또다시 설치 도메인으로 접근시 이미설치했다는 에러메세지를 띄워줍니다.
--------------------------------------------------------------------------------------------
업데이트 : http://도메인/모듈이름/version/버전(숫자)
로 들어가게되면 migrations 테이블에 모듈명 이있는지 검사를 합니다 없으면 에러메세지 띄웁니다.
모듈명의 버전 숫자를 체크하여 도메인에서 넘겨준 값과 비교 현재 설치된 버전보다 낮은 숫자를 입력하면 에러메세지 띄웁니다.
현재 설치된 버전보다 높으면 00버전_모듈명.php에 설정한 컬럼을 추가한후 업데이트 완료 메세지를 띄웁니다.
업데이트가 완료된 상태에서 또다시 똑같은 버전으로 업데이트 진행시에 에러메세지를 띄웁니다.
--------------------------------------------------------------------------------------------
삭제 : http://도메인/모듈이름/uninstall
로 들어가게 되면 migrations 테이블에 모듈이름과 동일한 행을 지우고 난뒤 곧바로 디비안 해당 테이블을 삭제하게 됩니다(예제는 members)
삭제된 상태에서 또다시 삭제 도메인으로 들어갈시에 에러메세지를 띄웁니다.
--------------------------------------------------------------------------------------------

팁이라고하기엔 너무 추상적 일수도있고 비생산적 일 수도 있으나 저 딴에는 이러한 방법이 저에 개발학습에 큰 도움이 되어서 이방식을 쓰고있습니다.

매번 디비에 들어가서 스키마 수정하기도 귀찮은게 없지 않아있고 실수로 스키마 싹 날려버렸는데 백업 해준 스키마 파일이 없으면 고지곧대로 멘붕올까봐

이방법을 선택하였습니다^^ 부족한 예제이지만 그래두 나름 괜찮다고 생각해 팁으로 남겨둡니다.

아 참고로 http://www.cikorea.net/user_guide_2.1.0/libraries/migration.html 를 참조하여

마이그레이션을 어느정도 이해를 하시고 예제를 적용해보시기 바랍니당!
첨부파일 member.zip (10.4 KB)
 다음글 다음에디터 syntax highlighter inter... (3)
 이전글 모듈단위로 개발할때 관리자 따로 구성하기? (2)

댓글

한대승(불의회상) / 2014/09/22 12:30:46 / 추천 0
간단하지만 샘플도 있으니 참고 하세요 ^^
http://sample.cikorea.net/sample_view/class/migration
방문넷 / 2014/09/22 16:35:42 / 추천 0
@불의회상 // 진짜 메뉴얼과 샘플만 봐도 정말 큰 도움이 되어요. 팁 도움을 주셔서 감사합니다!