CI 묻고 답하기

제목 앱/웹을 같이 사용하는경우 이렇게 만들어도 될까요?
글쓴이 라에 작성시각 2016/06/29 14:04:52
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 15067   RSS

안녕하세요!

아직 실력이 부족하여 포럼에 글남기는건 여전히 질문글밖에 없네요 ㅠㅠ언제쯤 나도 답변을 달 경지에 이를수있을지..ㅎㅎ

다름이아니고 지금 웹과 앱에서 같은 컨트롤러와 라이브러리등을 사용하려고 하는데

제가 택한 방법으로 개발을해도되는건가 해서요 :)

 

지금 생각하고있는 방법은 훅에서 앱인지 웹인지 구별하는 방법이에요

앱에서는 컨트롤러호출시에 key값을 넘겨서 훅에서 config에 있는 키와 비교해서 같을경우에 앱으로 로그인한걸로 간주하는 형태인데

이렇게 하는 경우, 컨트롤러에서 작업시에는 결과를 뿌려주는부분 혹은 redirect해줘야하는 부분에서

//앱인경우

if(IS_APP) { 앱인경우 json리턴 }

//앱이 아닌경우

else { redirect 혹은 뷰를 뿌려줌 }

 

이렇게 나눠서 작업을 해야하는 번거로움(?!)이 생기더라구요.

그래도 한 컨트롤러로 앱/웹 컨트롤이 다 되서 저렇게 하는것도 나쁘지않다 싶기도하고

또 한편으로는 제가 모르는 다른방법이 존재하는건 아닌가 싶은생각이 드네요 ㅎㅎ

저런 형태가 아닌 다른방식도 있을까요?

 다음글 controller 생성자에서 호출된 뷰를 호출 안하는... (5)
 이전글 이해가 안되는게 있어 질문을 드렸습니다. (2)

댓글

kaido / 2016/06/29 14:57:39 / 추천 0

hook 방법도 있지만 _remap 방법이 더 수월해 보입니다.

 

예제들어갑니다.

컨트롤러에  추가해서 테스트해 보세요.

 

public function _remap($method) {
		if ($this -> input -> is_ajax_request()) {
			if (method_exists($this, $method)) {
				$this -> {"{$method}"}();
			}
		} else {
//ajax가 아니면
			$this -> load -> view("/admin/common/header_admin");
			if (method_exists($this, $method)) {
				$this -> {"{$method}"}();
			}
			$this -> load -> view("/admin/common/footer_admin");
			//$this->output->enable_profiler(true);
		}
	}

ajax가 맞으면 헤더푸터가 없고, ajax가 아니면 헤더푸터가 붙습니다.

ajax 판별을 app key 값으로 적용 하시면 될것으로 보입니다.

 

라에 / 2016/06/29 15:08:15 / 추천 0

//kaido

remap이란 방법도 있었군요!

테스트해보고 하나씩 만들어가는방법으로 진행해야겠어요. 감사합니다!!

배강민 / 2016/06/29 15:25:07 / 추천 0

TapBBS의 경우는 웹/앱의 상황은 아니지만, pc/mobile 분기나 로그인체크 등 전체에 영향을 주는 부분을 최초버젼에는 생각하신 hooking 으로 처리했다가,

전체 컨트롤을 위해 core을 확장해서 모든 컨트롤러가 확장한 core를 보게하고

그 안에서 모두 나열해서 관련부분을 한군데 모아버렸습니다.

이게 좋은 방법이란건 아니라, 상황에 따라, 취향에 따라 정해지는거겠죵

kaido / 2016/06/29 16:07:08 / 추천 0

@배강민

그렇죠. 답은 없고 선택만이 있습니다.

후킹은  잘 생각 해야 할것이, 모든 컨트롤러에 적용되는 물건이라 신중해야 하는 부분이 있죠.  아무래도 자잘한 컨트롤이 어려운 부분이 있습니다.

 

반면 조금 더 코드를 늘어나는 단점이 있지만, _remap 처리를 할 경우 원하는 컨트롤러만 적용 가능 하다는 장점이 있죠.

 

말씀하신대로 코어를 확장해서 선택적으로 상속받게 하면 보기엔 복잡해 보이지만 더욱 내츄럴하게 컨트롤할 수 있는 장점이 생깁니다.

 

음악에 어려운 노래가 더 감동 주는건 아니다.  라는 말이 있듯이 어렵게 코드 짜는 것보다 오히려 상황에 맞춰서 짜는것이 중요하죠. 그 판단은 오로지 개발자의 경험 만이 척도입니다. 그러니 시간이 허락된다면 다양한 방법으로 도전 해보시는 것이 중요하죠 ㅎㅎ