헤매고 있습니다..
매뉴얼에서는
플러그인은 함수가 1개이면서 배포용이고
다른 헬퍼에 의존적이지 않으면서 함수가 여러개인 것(그런데 xml helper는 함수가 하나입니다.ㅠㅠ)
이 글(http://codeigniter-kr.org/tip/view/57/page/2/q/플러그인)에서는
코드 분량으로 구분하기도 하고,
사용빈도로 구분하기도 하고
이 글(http://www.askaboutphp.com/51/codeigniter-helpers-plugins-and-libraries.html)에서는
1. Plugins – I put all 3rd party codes I’m using in my application as Plugins. I would, as best as I can, try to use classes rather than straight function calls.
2. Helpers – Any standalone straight functions calls, which are repetitive in nature, I classify them as Helpers. For example, sorting functions, my own calculation functions, etc
3. Libraries – I classify my own classes as ‘Libraries’. Normally, if I’m already writing a class in my application, it would then to be the core logic of the application, as such, I group them all in the Library folder.
(간략해석)
1. 플러그인은 다른사람이 만든 코드(링크 예제에서는 함수가 아닌 클래스라 할지라도 남이 만든 것은 플러그인으로 간주하는 것 같습니다.)
2. 헬퍼는 독립적으로 실행되며 반복적으로 사용되는 내가만든 함수,
3. 라이브러리는 내가만든 객체
라고 합니다.
도대체 도무지 개념이 잡히지 않습니다.
내가 만든 함수는 도대체 어디에 두어야 하는 것인가요?
제발 개념을 탑재할 수 있게 도와주세요...ㅠㅠ
1. 어디선가 얼핏 본 기억이 나는데 다른 프레임워크는 플러그인의 구분이 명확한데 ci의 경우에는 공식적으로 딱 무엇이다라고 정의한 것은 본 적이 없는 것 같습니다. core다 아니다의 차이는 목적의 차이라고 생각을 합니다. ci의 목적은 어떤 결과물(사이트겠죠)을 구조적으로, 관리하기 편하게, 재사용이 용이하게 개발하는데 있다고 본다면 ci의 플러그인은 사이트를 개발하는데 도움을 주기는 하나(헬퍼와 같이) 전체적인 사이트개발 방법론(?)으로 봤을때 일부분의 한정된 역할을 하는 것이라고 생각이 됩니다. (그말이 그말이기는 하지만.. ^^;)
매뉴얼에 플러그인은 헬퍼와 거의 동일하고 하나의 역할을 하는 함수이고 헬퍼는 그런 역할을 하는 함수의 집합이다라고 되어있습니다. 그정도선에서 이해하시면 될 것같습니다. 제가 ci를 보는 입장에서는 플러그인이냐 헬퍼냐는 사실 중요하지 않습니다. 헬퍼에 한개짜리 함수를 넣어 쓸수도 있는 것이고 플러그인에 여러개의 함수를 넣어 사용할 수도 있는 부분입니다. 그리고 ci의 loader를 봐도 플러그인과 헬퍼 부분이 99% 동일합니다.
2. 제가 잘못 기술한 부분입니다. 수정하겠습니다. 헬퍼와 플러그인의 구현방식은 일반함수를 쓰는 것과 같이 동일합니다.
결론을 좀 내려드리자면 플러그인과 헬퍼 구별하느라 너무 많은 에너지를 쓰지 마시라는 것입니다. ^^
(유연하면서도 어딘가 모르게 살짝 이해가 안가는 어설픈 부분이라고나 할까요?)
그리고 사용빈도수에 따라 구분했을 수도 있습니다. 그리고 헬퍼 목록을 보시면 class와 상당히 유사합니다. 라이브러리를 사용하면서 도움을 주는 역할 정도.. 플러그인은 라이브러리와 직접적 연관은 없는..
(원래는 저랬으리라 생각이 되는데 tank auth를 보면 tank 라이브러리에서 captcha를 기본으로 사용하고 있습니다. ^^;)
그리고 저 자신도 웹메이커3라는 CMS를 개발하면서 사이트를 구성해주는 아주 중요한 부분을 plugin으로 사용을 했습니다. ^^;
결국 구분 짓는 자체가 무의미하다는 거죠. ^^
케이든님. 감사합니다.
그렇네요 얼마전에 케이든님이 쓰신 글(http://codeigniter-kr.org/free/view/3100/page/1/q/2.0)과 검색(http://www.haughin.com/2010/03/11/codeigniter-2-critical-changes-implications/)해 보니 plugin 사라진다고 되 있군요.
그럼 지금부터는 플러그인에 함수 만들어 넣어두면 안되겠네요
플러그인에 있는 함수들 헬퍼로 옮겨놓고
플러그인 load 하는 구문을 헬퍼를 로드하도록 해야 겠습니다. 고맙습니다.
ps. 이 사항은 2.0으로 버전업 되었을 때 기존코드를 사용하는데 문제 없도록, 지금까지 만들어 놨던 플러그인을 헬퍼로 차근차근 옮기고, 지금부터 만드는 프로그램들은 헬퍼만 사용하자는 공지를 하는게 어떨까요?
http://codeigniter-kr.org/tip/view/57/page/3/q/헬퍼