제목 | 코드를 짜긴짰는데 이해가 안됩니다ㅠ | ||
---|---|---|---|
글쓴이 | 수야디벨 | 작성시각 | 2012/10/26 10:30:35 |
|
|||
} |
|||
다음글 | 트위터 연동할려면 ..[수정] (7) | ||
이전글 | kohana와 ci간의 세션공유문제입니다. (12) | ||
헛발이
/
2012/10/26 11:13:19 /
추천
0
|
pithecus
/
2012/10/26 13:29:31 /
추천
0
위의 헛발이님이 잘 설명해주신것 처럼
CI 에서 모든 http request 는 index.php 를 통해서 처리가 됩니다. (그래서 rewrite 를 설정할 때 RewriteRule ^(.*)$ /index.php/$1 를 설정하는거죠) 그리고 index.php 에서는 routing 과정을 거치는 데 이때 php 의 $_SERVER['REQUEST_URI'] 를 파싱해서 함수를 호출하는거죠. http://xxx.com/member/member_alert/2 페이지를 호출할 경우 $_SERVER['REQUEST_URI'] = "http://xxx.com/member/member_alert/2" 이런 string 이 들어있을거고 php 의 parse_url() 내장 함수를 이용해서 "member/member_alert/2"를 분리할 수 있는거죠. 이제 "/" 로 explode 하면 ["member","member_alert","2"] 배열이 만들어질거고 call_user_func() 로 member 컨트롤러의 member_alert 를 실행합니다. (2는 인자로 전달) 그래서 처음으로 돌아가면 마지막 URL 에 1,2,3 뭘 입력하든 member_alert 가 호출되는 겁니다. 여담이지만 php 의 놀라우면서도 무식한 특징중의 하나가 parse_url() 이란 함수를 내장함수로 지원한다는 거 같네요. 처음엔 CI helper 에서 왜 parse_url 함수가 없나 하고 찾고있었습니다. -_-;; |
변종원(웅파)
/
2012/10/26 13:52:28 /
추천
0
매뉴얼도 중요하지만. 어느 정도 경력이 되시니 해당 core함수를 직접 보시는 것이 상당한 도움이 됩니다.
매뉴얼에는 segment함수는 주소를 배열화한 것의 순서에 해당하는 값을 반환하는 것이라고 되어있는데 실제 어떻게 동작하는지는 안나오죠. ci를 제대로 쓰시려먄 core도 얄어보시기 바랍니다. ^^
|
한대승(불의회상)
/
2012/10/26 14:11:53 /
추천
0
웅파님 조언에 한 표!!!
system/core/URI.php 소스를 분석해 보세요. ^^ |
수야디벨
/
2012/10/27 00:06:10 /
추천
0
와 , 정말 ~ ^^ |
http://cikorea.net/user_guide_2.1.0/general/urls.html
즉 메뉴얼에 보시면 URL은 기본적으로
http://도메인/클레스명/함수명/기타등등.....
으로 인식하게 됩니다. 자신이 라우팅이나 다른 방식을 사용하게 되면
URL이 다른 방식으로 전달되겠지만 기본적인 URL방식은 http://도메인/클레스명/함수명/기타등등.....이 된답니다..
그 방법은 아마도 system에 있는 코어쪽을 보시면 알겠지만 코어는 대부분 건드리지도 않고 살펴 보지도 않쵸.. 저도 그렇구요 ㅋㅋ
하지만 아마도 이런 방식을 것입니다..
모든 URL은 index.php로만 하는것이죠.. 뒤에 무슨 문자가 붙거나 말거나... 무조건 index.php만 실행하는것이고..
그 index.php는 자신의 뒤에 붙은것들을 모두 스트링으로 가져와서 / 로 자른 후에 첫번째건 클래스명으로 두번째건 함수명으로 구분지어서 해당 콘트롤러를 자동으로 불러주는것이죠...
크레임위크의 기본동작이나 핵심구조등은 아마 직접 찾아 보셔야 할듯 싶습니다..
http://cikorea.net/user_guide_2.1.0/overview/appflow.html
그리고..
그리고 나중에 좀 하시면 알게 되시겠지만요..
segment로 몇번째 인자가 id값이다 라고 하는건 조금 위험? 한 일이 된답니다.
왜냐 하면 URL이 바뀐다거나.. 즉
http://도메인/클레스/함수/...
이렇게 되었던 사이트가 정책이 바뀌
http://도메인/모듈/클레스/함수/...
로 변경이 되거나..
http://도메인/클레스/함수/카테고리/...
http://도메인/국가/클레스/함수/...
로 변경된다면 이미 3번째라고 정해진 아이디값을 가져오기가 불편해 지거든요..
그래서 포럼소스에도 있듯이 URL를 모두 가져와 자신만의 아이디값찾는 함수를 만들어
사용한답니다..
즉 전체 URL을 가져와서 /로 분리 하고 그중에서 함수명다음의 인자가 아이디값이다
라는 특정한 함수를 만드는거죠...
아마 포럼 소스를 보시면 금방 아실듯 싶어요...
그리고 자신의 소스중에...
system/core/URI.php
를 한번 보시기 바랍니다..