CI 묻고 답하기

제목 CI interface not found 문제 질문 드립니다.
카테고리 일반
글쓴이 알라알리 작성시각 2017/10/10 09:19:52
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 264   RSS

안녕하세요 제가 현재 Interface 'ItemService' not found  문제를 겪고 있습니다.

 

Controller

cotroller에서 itemServiceImpl을 load 했습니다.

 

models/item/service/ItemService.php

models/item/service/ItemServiceimpl.php

models의 구조는 위와 같습니다.

 

ItemService.php

 

ItemServiceimpl.php

ItemServiceimpl 에서 ItemService를 implements 했습니다.

하지만 현재 오류 부분은 ItemServiceimpl에서 ItemService interface를 찾을수 없다고 Fatal errorr 가 나오고 있습니다.

위 문제를 어떻게 해결해야 될까요?? 답변 부탁드립니다! 

 

 다음글 500에러문제인데요... 어디가 문제인지 도무지 모르겠... (4)
 이전글 $this->db->escape 에 대해서 ... (2)

댓글

kaido / 2017/10/10 09:35:11 / 추천 1

모델을 로드한 다음에 implements 하는건 안되는걸로 알고있습니다.

이유는 load 부분과 model이 어떻게 불러오는지 코어 부분 확인해 보시면 아실거라 사료됩니다.

[사실 본지가 오래되서 약간 긴가민가한데 기본적으로 로드는 NEW 에 좀 가깝습니다. 100%는 아니구요.]

 

인터페이스 구성하고 서비스 만들어서 사용하실 생각이시면 

auto load 와 namespace 를 사용해서 구성 하시길 권장해 드립니다.

PSR4 부분을 찾아서 보시면 이해가 가실것입니다.

변종원(웅파) / 2017/10/10 09:50:14 / 추천 1

컨트롤러, 모델은 디렉토리 1단계만 가능한걸로 아는데 소스 다시 봐야겠네요.

추가 : 컨트롤러, 모델 디렉토리 1단계만 인식하는거 맞습니다.

알라알리 / 2017/10/10 12:30:27 / 추천 0

@kaido 

답변 감사합니다.

require_once 를 통해 controller에서 service를 load를 했지만 

ItemServiceimpl 에서 ItemService 인터페이스가 없다고 계속 나타납니다.. 

다른 방안이 있을까요?

 

@변종원

디렉토리 1단계만 인식 한다는건 무슨 말씀이신가요?? 

한대승(불의회상) / 2017/10/10 13:02:35 / 추천 0
@알라알리 require가 안되서 그런 겁니다. 경로를 확인해 보세요. 디렉토리 1단계만 인식한다는건 컨트롤러 이야기 입니다.
kaido / 2017/10/10 13:50:25 / 추천 0

답변대로 auto load 를 구성 하셔서 사용 하시는게 더 편하실 것 입니다.

auto load 는 php 고유의 class load 방법 입니다.

http://php.net/manual/kr/language.oop5.autoload.php

 

auto load를 걸어두고 interface 구성해 놓으신 다음에 객체를 불러오고 싶은곳에서 namespace 를 호출하면 해당 class를 자동으로 require  되는 방식입니다.

 

아니면 load 가 아니면 model에서 전부 상속 받아가야 할 것입니다. 

혹은  각각 require 해야 하는 것으로 기억 합니다.

사실상 따로 require 하면 DAO 형식으로 만드는게 의미가 없어지니, auto load 를 권하는 것입니다.

알라알리 / 2017/10/11 08:52:15 / 추천 0

@한대승,kaido 

좋은답변 감사합니다 해결했습니다!