2013-11-14 7 views
8

이 코드에서 나를 도울 수 있습니까? 나는 CodeIgniter와 PhpStorm에서 새로운데, 나는 문제가있다. 코드가 잘 작동하더라도 PhpStorm IDE는 오류를 표시합니다 (Persons (컨트롤러) 클래스는 Person (모델) 클래스를 찾을 수 없습니다). enter image description herePhpStorm CodeIgniter 클래스를 찾을 수 없습니다.

$data['persons']=$this->**person**->get_person();

enter image description here

enter image description here

= Persons 클래스 구문에 메시지 "필드 person 클래스 Persons 발견되지 않음"이있다.

이 문제를 해결하는 방법을 가르쳐 주시겠습니까? 실제로는 출력이 좋으며 Persons 클래스의 경고 메시지를 발행하지 않고 데이터를 검색합니다.

+0

모델 클래스의 이름이 올바르게 지정 되었습니까? CodeIgniter에는 명명/대소 문자에 대한 규칙이 있습니다. 또한 거기에 생성자가 있습니다. – minboost

+0

컨트롤러가 "Persons"인 동안 모델 클래스의 이름은 "Person"입니다. – Echusen

+0

이'/ * @var \ person $ data * /'로 무엇을 달성하려고합니까? 나는'$ data' 변수를'Person' 클래스의 인스턴스로 선언 할 것을 당신에게 이해합니다. 또는 다른 것? – LazyOne

답변

-1

일반적으로 대부분의 사람들은 Model 클래스 이름에 '_model'접미사를 추가합니다. 나는이 같은 "Person_model"모델 "person_model"를 호출하여 모델의 이름을 변경하는 것이 좋습니다 :

$this->load->model('person_model'); 
$this->person_model->get_person(); 

난 당신이 그것을 적절한 해결책을 찾을 수 있다고 생각!

+0

"Person_model"로 모델 클래스의 이름을 변경하려고 시도했지만 아무 것도 변경되지 않았습니다. – Echusen

+0

데이터를 성공적으로 검색했기 때문에 문제가 phpstorm에 있다고 생각합니다. – Echusen

+0

나는 문제가 분명하지 않다고 생각합니다. 실제 IDE 문제가 아닌 * IDE 오류 *에 대해 묻고 있습니다. 그것은 분명하지 않습니다. – minboost

15

person 속성 ($this->property)은 PHP의 마법 방법을 통해 생성되고 액세스되므로 명시 적으로 선언되지 않습니다.

PhpStorm은 CodeIgniter 프레임 워크를 특별히 지원하지 않으므로 $this->person의 출처와 유형을 추측 할 수 없습니다.

그러나 실제 클래스보다 작은 PHPDoc 주석을 사용하면 @property 태그를 사용할 수 있습니다.

/** 
* @property Person $person Optional description 
*/ 
class Persons extends CI_Controller { 

... 그리고 아 마법 - 그것은 작동 : LazyOne의 대답은 처음에 나를 위해 작동하지 않았다 enter image description here

2

. 몇 가지 테스트를 한 후에 PHPDoc에서 속성을 선언하는 방법에 관한 내/외부 소문자 문제를 발견했습니다. 다음 관찰이 다른 사람을 도울 수 있기를 바랍니다. phpStorm 내가이 클래스를 올바르게 선택하는 지금

$this->load->model('Custom') 
$table = $this->Custom->get(); 

: 나는로드 예를 들어 모델에게 다음과 같은 방법을 사용하여 내 컨트롤러에서

class Custom extends CI_Model {} 

: 이것은 내 모델 클래스를 선언해야 할 것입니다

* 
* @property Custom $custom 
* 

그러나이 디 : 같은 (중 하나 CI_Controller 클래스 또는 별도의 CI_phpStrom.php 파일 위) 다른 사람에 의해 설명 된대로 원래 기본 클래스 위의하는 PHPDoc @property 코멘트를 추가 변수 이름은이 경우 대소 문자를 구분되면서,이 문제를 제거 dn't 내가 써야했다 :

* 
* @property Custom $Custom 
* 

을 제대로 클래스를 데리러 내 위의 컨트롤러 코드.대안은 (이 모델 선언이 대문자를 사용하는 경우에도 작동) 함수를 호출 할 때 소문자를 사용하는 것입니다

$this->load->model('custom') 
$table = $this->custom->get(); 

재미있는 것은이 모든 대문자 또는 소문자 내 모델 클래스 "Custom_model"호출하면 문제가되지 않았다 - PHPDoc 속성 변수를 $ Custom_model 또는 $ custom_model로 설정하면 변경되지 않았습니다 ...

관련 문제