제목 | CI interface not found 문제 질문 드립니다. | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | 알라알리 | 작성시각 | 2017/10/10 08:49:52 |
|
|||
안녕하세요 제가 현재 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:05:11 /
추천
1
|
변종원(웅파)
/
2017/10/10 09:20:14 /
추천
1
컨트롤러, 모델은 디렉토리 1단계만 가능한걸로 아는데 소스 다시 봐야겠네요. 추가 : 컨트롤러, 모델 디렉토리 1단계만 인식하는거 맞습니다. |
알라알리
/
2017/10/10 12:00:27 /
추천
0
@kaido 답변 감사합니다. require_once 를 통해 controller에서 service를 load를 했지만 ItemServiceimpl 에서 ItemService 인터페이스가 없다고 계속 나타납니다.. 다른 방안이 있을까요?
@변종원 디렉토리 1단계만 인식 한다는건 무슨 말씀이신가요?? |
한대승(불의회상)
/
2017/10/10 12:32:35 /
추천
0
@알라알리 require가 안되서 그런 겁니다. 경로를 확인해 보세요. 디렉토리 1단계만 인식한다는건 컨트롤러 이야기 입니다.
|
kaido
/
2017/10/10 13:20: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:22:15 /
추천
0
@한대승,kaido 좋은답변 감사합니다 해결했습니다! |
모델을 로드한 다음에 implements 하는건 안되는걸로 알고있습니다.
이유는 load 부분과 model이 어떻게 불러오는지 코어 부분 확인해 보시면 아실거라 사료됩니다.
[사실 본지가 오래되서 약간 긴가민가한데 기본적으로 로드는 NEW 에 좀 가깝습니다. 100%는 아니구요.]
인터페이스 구성하고 서비스 만들어서 사용하실 생각이시면
auto load 와 namespace 를 사용해서 구성 하시길 권장해 드립니다.
PSR4 부분을 찾아서 보시면 이해가 가실것입니다.