질문 Q #11558
index에 case문 질문
수야디벨 2014-08-20 09:59:30

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

포럼소스는 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에서 분기하는 이유가 무엇일까요?
답변 4
#1 변종원(웅파) 2014-08-20 10:08:22
routes.php에서 하는 역할인데
switch문 내부에서 직접 분기 등등이 있었고 포럼소스로 바꾸면서 분기 부분이 빠진 겁니다.
(2009년 오픈 당시 거의 저 혼자 작업했던 터라 시간이 없어서 형태를 없애지 못하고 놔둔거죠. ㅋ)
#2 수야디벨 2014-08-20 10:13:56
웅파//

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

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

응용하면

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

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

/admin/bbs/

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

 
#4 수야디벨 2014-08-20 11:40:30
/kaido

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

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

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

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

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

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