CI 묻고 답하기

제목 hmvc 사용하려는데 혼란스러운 부분이 있어요
글쓴이 초코바 작성시각 2014/05/28 21:33:47
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 15732   RSS
몇시간 전에 질문올렸다가 제가 잘못한건가 싶어 확인해보고 다시 올립니다.

hmvc 소스중에 이상한 부분이 있어서요..
third_party/Router.php 파일의
MX_Router 클래스에 보면

144번째 줄
protected function _set_default_controller()
이 함수가 있는데요

CI의 원래 Router 클래스에서는 해당 메소드의 접근지정자가 생략되어 있습니다.
그래서 디폴트로 public 이 되는데 어째서 상속받은 클래스에서 protected 로 선언이 되어 있는지 알수가 없네요.
상속받은 쪽에서 protected => public 방향으로만 변경할 수 있는거 아닌가요?
public => protected 방향으로 지정할수 있나요?
전 이 소스 그대로 돌렸더니 에러가 납니다.  그래서 public 으로 바꾸니까 에러가 안나네요.
다른 분들은 이 소스 그대로 사용해도 에러가 안나는지 궁금합니다.
 
 다음글 여러개의 어플리케이션에서 로그인 구현과 관련하여(세션)
 이전글 CI 는 Mariadb 와 궁합이 안맞는듯 하네요.. ... (14)

댓글

변종원(웅파) / 2014/05/28 22:10:37 / 추천 0
 오버라이드 아닐까요? 제가 hmvc 소스가 없는지라 확인하기가 힘들지만..
초코바 / 2014/05/28 23:55:09 / 추천 0
그니까 오버라이딩할때 public(부모) => protected(자식) 로 변경이 가능하지 않은데 왜 소스엔 protected 로 되어 있는지가 궁금해서 질문한거예요..... 라고 말하려다가 검색해보니 이게뭔가요?

이거하고
https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/downloads

이거하고
http://cikorea.net/source/view/791/page/1/

다르네요???
처음꺼는 해당 메소드가 아예없네요 -_-;;;

원래 다른 소스인건가요?  ci 첨 써봐서리...
초코바 / 2014/05/29 02:11:57 / 추천 0
그냥 bitbucket 꺼 쓰는게 좋겠네요.
이게 잘 됩니다.  답변감사합니다.
 
letsgolee / 2014/05/29 08:52:36 / 추천 0
초코바님 위에 링크 걸어준 건 제가 wiredesignz 거를 다운받아 3.0이 지원되도록 수정한 파일입니다. 

따라서 2.1.4와 3.0과의 차이를 먼저 보셔야 할 것 같은데요...

제가 제목을 붙인 것도 hmvc for 3.0dev라고 분명히 밝혔습니다.
위에서 언급한 _set_default_controller()는 2.14.에서는 선언이 되어 있지 않아 당연히 public으로 생각합니다. 하지만 이 함수는 3.0에서는 명확히 protected로 수정이 되었습니다. 함수 자체도 앞에 언더바가 붙어 public으로 사용되지 않는 건 아시죠? 당연히 2.1.4와 비교하니 답이 그럴 수밖에 없는 겁니다.

다시 언급하면 wiredesignz의 hmvc모듈 안에 있는 오류를 수정하고 또 3.0이 지원되도록 수정한 버젼입니다. 차라리 저한테 문의했으면 더 좋았을텐데...

 
초코바 / 2014/05/29 11:06:56 / 추천 0
앗!  죄송해요.  처음 써보는거라 뭐가뭔지 몰라 본의아니게 무례한 글이 되어 버렸네요.
ci가 3.0이 따로 있나봐요?  2.1.4로 공부하고 있는데 다시 봐야겠네요 ㅜㅜ
암튼 기분 언짢으셨다면 죄송합니다.

ps. 그런데 공식홈피에 ci 3.0이 없는거 같은데 github에는 있네요. 정식으로 릴리즈 된건가요?  아님 개발중인건가요?
한대승(불의회상) / 2014/05/29 11:13:23 / 추천 0
초코바// 3.0은 개발 버젼 이라 공식 홈에는 등재되지 않고 있습니다.
초코바 / 2014/05/29 11:16:16 / 추천 0
그렇군요.  당분간 2.1.4로 사용해야겠네요.  감사합니다.