CI 묻고 답하기

제목 PHP(no 프레임워크) 날코딩으로 작업하다가 CI로 가는 초보 질문입니다.
글쓴이 그때그사람 작성시각 2012/11/30 11:11:02
댓글 : 9 추천 : 0 스크랩 : 0 조회수 : 20736   RSS
 코딩시작한지 이제 1년도 않됐는데 회사에서 만든 (인트라넷)웹서버를 CI로 다시짜려고합니다.
(CI가 너무 매력적이어서...ㅜ.ㅡ)
아직 다른 소프트웨어 공학이나 개념이 너무 약해서 몇가지 질문을 드립니다.
CI를 쓰려면 OOP를 알아야 하는것 같아 head first oop를 구했는데 첫장부터 JAVA 5를 알아여한다고해서
2일만에 head first JAVA를 속독하고 질문올립니다.ㅠ.ㅠ


1. 이전 코딩할때는 공유함수만 따로 reqiure_once로 빼서 작업했습니다.
CI의 class를 그전에 함수 쓰듯이 하면 돼나요? instance없는 class 메쏘드를 사용하면 같은 형태로 보면 돼는건가요?

2.  java에서 class의 main이 CI의 index로 보면 돼나요?

3. 간단한 예제를 echo문 정도할때는 생성자없이 실행이 돼는데 helper함수 load하면서는 생성자없이 출력이않돼더군요.
JVM에서처럼 제가 생성자를 입력하지 않아도 자동으로 인터프리터가 생성자를 삽입해주다가 적절하지 못해서 에러가 나는건가요?
그렇다면 index가 들어가는 클래스마다 생성자를 기입하면 돼는지요.


마음은 CI로 하고십고 배경지식을 알아가는중이지만 난데없는 JAVA책보면서 악전고투하다보니 질문이 좀 이상합니다.ㅠ.ㅜ
고진선처바랍니다. 
 다음글 Native Session (4)
 이전글 다중 게시판 생성에 따른 uri 규칙을 어떻게 하는게 ... (19)

댓글

헛발이2 / 2012/11/30 11:26:18 / 추천 0
공유 함수라면 필요한 함수들만 따로 모아둔다는거죠?

CI에선 그렇게 따로 모아두는 함수묶음을 핼퍼 혹은 라이브러리라고 해요...

핼퍼는 단독으로 처리 하는 함수들의 묶음이라고 생각하시면 되고..
라이브러리는 ci의 자원을 사용하는 함수들의 묶음이라고 하시면 되죠...

근데 첫장부터 어렵군요... 자바라~~
milosz / 2012/11/30 11:30:18 / 추천 0
CI는 MVC라 OOP 책만 봐서는 사실 이해하기 쉽지 않을겁니다.
메뉴얼 정독 및 MVC에 대해 검색해보시는 것을 권해드립니다 'ㅅ'
그때그사람 / 2012/11/30 11:43:55 / 추천 0
 /헛발이2님 -- 답변감사합니다...ㅠ.ㅜ
/milosz님 -- 메뉴얼3회독째로 어떤내용이 메뉴얼에 있는지는 대충알겠는데 막상 이미 있는 결과물(php로 만든)을
CI로 다시짜려니 첫페이지부터 막히더라구요...ㅠ.ㅜ 
아마도 말씀하신 MVC때문이였던가 봅니다.

오늘 head first시리즈의 design patterns(스토리가 있는 패턴 학습법),  software development(더 쉽고 재미있게 소프트웨어를 개발하는 방법)책 받으러 가는데...
object-oriented analysis & design(세상을 설계하는 객체지향 방법론)까지 메들리로 주말동안 막고 푼 다음에 다시 도전해야겠습니다...ㅡㅡ+ 
으아아 / 2012/11/30 12:03:19 / 추천 0
 아... 역시 자바 개발 사이드 분 ㅠㅠ

head first 의 design patterns 에 나와있는 MVC와 ci 하고는 약간 다릅니다.

jsp 프레임워크에 따라서 MVC가 약간 달라요.

우리가 흔히 아는 강력한구조로 만들어진 MVC 패턴.

해당 주체는 반드시 정해진 역활을 해야한다.

M [모델역활]
V [뷰 역활]
C [컨트롤 역활]

이걸 스프링 MVC 패턴 2 라고 부릅니다.

그런데 자바의 MVC 패턴에 대한 이야기는 체감온도가 약간 다르게 느껴지실 거에요.

문제는 CI 의 MVC도 약간 다르다는 것입니다.

스프링의 경우엔 MVC를 강력하게 묶는걸 권장하고 있고
스트라이프는 느슨한걸 권장 합니다. 

CI의 경우엔 사실 느슨한 편이구요.

CI는  타 프레임워크 보다 배우기 편합니다.

이해보다는 그냥 먼저 따라 해보면 어느샌가 그냥 하게 되더라구요 ( ..)

덕분에 CI 는 너무 느슨하다 보니 MVC 패턴으로 만들어야 하는데

간혹 MC 패턴 이라든가 ( ..) 그렇게 만들수도 있습니다.
MV가 되는 순간 그건 이미 MVC가 아니게 되죠 후...



MVC에 너무 연연 하지 마시고 간단한 베이스 코드들을 따라 해보는게 제일 인것 같아요.
[저도 아직 한참 배워야 하지만 흑흑..]
그때그사람 / 2012/11/30 13:52:05 / 추천 0
 /으아아  답변 감사합니다.^^
그런데 지금 제가 보고있는 레퍼런스를 너무 믿어선 않되는 상황인거군요...ㅠ.ㅜ
초난감...ㅜ.ㅜ
한대승(불의회상) / 2012/11/30 16:53:25 / 추천 0
네.. 처음 들어 오면 어리둥절 합니다.
특히 타 프레임워크나 언어에서 선행 학습이 있었다면 뭐 이런.... 
ㅎㅎㅎㅎ

1. 이전 코딩할때는 공유함수만 따로 reqiure_once로 빼서 작업했습니다.
CI의 class를 그전에 함수 쓰듯이 하면 돼나요?

네 system/helper 에 들어 있는 파일 하나 열어 보시면 그 구조가 금방 이해 되실 겁니다.
대신 사용자가 만든 공유 함수들은 application/helpers 폴더에 넣어두시면 됩니다.
system/helpers 폴더에 넣게 되면 나중에 코어를 업데이트 할 때 맨붕을 겪게 됩니다.
사용 하실때는 생성자 (__construct()) 함수에서 $this->load->helper()로 로드 하신 후 사용 하세요.

2.  java에서 class의 main이 CI의 index로 보면 돼나요?

아니오.
하지만 역활은 비슷합니다.
http://www.mysite.co.kr/test
를 호출 할 경우 함수명이 없으면 기본값으로 index() 함수를 호출 하도록 되어 있습니다.
정확한 주소는 http://www.mysite.co.kr/test/index 입니다.
써 넣고 보니 main()으로 이해 하셔도 될것 같군요.

3. 간단한 예제를 echo문 정도할때는 생성자없이 실행이 돼는데 helper함수 load하면서는 생성자없이 출력이않돼더군요. JVM에서처럼 제가 생성자를 입력하지 않아도 자동으로 인터프리터가 생성자를 삽입해주다가 적절하지 못해서 에러가 나는건가요? 그렇다면 index가 들어가는 클래스마다 생성자를 기입하면 돼는지요.

생성자는 써주지 않으셔도 되지만 관례상 적어 주시는게 좋을것 같습니다.
helper는 클래스와 달라서 함수를 적재만 할 뿐 실행은 되지 않습니다.
함수 호출이 있을때만 실행 되지요.
그냥 공유 함수 모아 놓은 클래스로 생각하시면 됩니다.


그때그사람 / 2012/12/01 09:23:39 / 추천 0
원 포인트 레슨 수준의 답변이십니다. (우문현답이라는..^^) 주말동안 감을잡는걸 목표로(말 그대로 감만..ㅜ.ㅡ) 열공해야겠네요. 빨리실력을 쌓아서 정모때도 뵈러 가겠습니다^.^
이지포토 / 2012/12/09 13:32:18 / 추천 0
config.php 맨 하단에

include_once $_SERVER['DOCUMENT_ROOT']."/application/libraries/utils.php";
이런식으로 기존 라이브러리들을 넣으면 어떤 페이지에서나 날코딩할때 처럼 쓸수 있습니다.

가급적 사용자 라이브러이는 helper 에 흡수 통합하시길..
저는 워낙 길어서.. 라인수가 5000 라인이네요.^^ 
그때그사람 / 2012/12/09 20:43:48 / 추천 0
 엇.. 고맙습니다.
현실적인 해결책이네요^^