CI 묻고 답하기

제목 index에 case문 질문
글쓴이 수야디벨 작성시각 2014/08/20 09:59:30
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 12677   RSS

포럼소스를 보고 질문드리는데 ,

포럼소스는 index() 부분을 switch시켜서 분기시키더라구요?
 
function index()
	{
		switch($this->uri->segment(2))
		{
			case 'lists':
				$this->lists();
			break;
			case 'view':
				$this->view();
			break;
			case 'write':
				$this->write();
			break;
			case 'delete':
				$this->delete();
			break;
			case 'edit':
				$this->edit();
			break;
			case 'reply_edit':
				$this->reply_edit();
			break;
			case 'download':
				$this->download();
			break;
			case 'move':
				$this->move();
			break;

			default:
				$this->lists();
			break;
		}
	}


근데 왜 굳이 저렇게 하는지 궁금합니다.

어차피 segment(2)에 해당 function이 들어가면 해당 function이 호출될텐데 ..

(즉 도메인/컨트롤/view 하면 어차피 function view()가 호출될 것이고 , 컨트롤/lists 로 호출하면 어차피 function lists() 가 호출될터인데)

저렇게 index에서 분기하는 이유가 무엇일까요?
 다음글 관리자페이지 (1)
 이전글 이미지 라이브러리 썸네일 만들기에서.. (2)

댓글

변종원(웅파) / 2014/08/20 10:08:22 / 추천 0
routes.php에서 하는 역할인데
switch문 내부에서 직접 분기 등등이 있었고 포럼소스로 바꾸면서 분기 부분이 빠진 겁니다.
(2009년 오픈 당시 거의 저 혼자 작업했던 터라 시간이 없어서 형태를 없애지 못하고 놔둔거죠. ㅋ)
수야디벨 / 2014/08/20 10:13:56 / 추천 0
웅파//

그런거군요! ㅎㅎ 이제야 저 분기의 존재 이유를 알게되었네요~ :) 
kaido / 2014/08/20 10:23:51 / 추천 0
아니요? 의미있습니다!

/cont/index
/cont/
이렇게 접근시에도 처리를 별도로 줄수 있습니다.

응용하면

/admin/bbs/lists
/admin/bbs/write

이런식으로 분리를 해놓았는데

/admin/bbs/

이렇게 접근한다거나~ 하면 처리 하는 부분이 필요하게 됩니다.

 
수야디벨 / 2014/08/20 11:40:30 / 추천 0
/kaido

아 물론 index()의 존재는 이유가 있지요.

그런데 /admin/bbs/ 로 호출하면 어차피 index가 호출 됩니다.

따라서 index에는 switch로 분기할 필요없이 default 뷰만 지정해주면 되요.

어차피 /admin/bbs/ 만 호출하면 저걸로 호출할수 있는 페이지의 종류는 한개 일테니까요.

그러니 index에 저렇게 switch 해서 모두 분리하는건 불필요하고 

default 페이지만 지정하면 된다고 생각합니다만..