2013-11-14 9 views
8

私にこのことを教えてもらえますか?私はCodeIgniterとPhpStormで新しく、問題があります。 PhpStorm IDEは、コードが正常に機能していてもエラーを表示しています(Persons(コントローラ)クラスはPerson(モデル)クラスを見つけることができません)。PhpStorm CodeIgniterクラスが見つかりません

enter image description here

enter image description here

enter image description here

$data['persons']=$this->**person**->get_person(); = Personsクラスからこの構文に、メッセージ "クラスPersonsには見出されないフィールドperson" があります。

これを解決する方法を教えてもらえますか?実際には出力は良好で、Personsクラスの警告メッセージだけで問題なくデータを取得します。

+0

モデルクラスの名前は正しくありますか? CodeIgniterには、命名/ケーシングに関する規則があります。また、そこにコンストラクタがありますよね? – minboost

+0

私のモデルクラスの名前は "Person"で、コントローラは "Persons"です。 – Echusen

+0

この '/ * @var \ person $ data * /'で何を達成しようとしていますか?私は '$ data'変数を' Person'クラスのインスタンスとして宣言することを理解しています。または、他の何か? – LazyOne

答えて

-1

ほとんどの人は、Modelクラス名に '_model'という接尾辞を追加します。私はあなたがそれを適切な解決策を見つけるかもしれないと思う

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

:私はあなたのモデルは、モデル「person_model」は、このように呼んで「Person_model」と名前を変更することを示唆しています!

+0

モデルクラスの名前を "person_model"に変更しようとしましたが、何も変更されていません。 – Echusen

+0

私はデータを正常に取得したので、問題はphpstormにあると思います。 – Echusen

+0

私はあなたの質問が問題ではないと思います。実際のコードの問題ではなく、* IDEエラーについて質問していますよね?それはあまり明確ではありません。 – minboost

15

personプロパティ($this->property)は、PHPのマジックメソッドを使用して作成およびアクセスされるため、明示的に宣言されていません。

PhpStormはCodeIgniterフレームワークを特別にサポートしておらず、$this->personがどこに由来し、どのタイプであるのか推測できません。

しかし、実際のクラスの前にちょっとしたPHPDocコメントを書くことができます。@propertyタグを使用してください。

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

...とオハイオ州の魔法 - それは動作します: enter image description here

2

LazyOneからの答えは、最初は私のために動作しませんでした。いくつかのテストの後、PHPDocでプロパティを宣言する方法に関して、大文字/小文字の問題があることがわかりました。うまくいけば、次のような観察が他の人を助けることができればと思います。 phpStormが、私はこのクラスを正しくピックアップするために今すぐ

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

:私はロードし、例えばモデルに以下の方法を使用して私のコントローラで

class Custom extends CI_Model {} 

:これは私が私のモデルクラスを宣言しなければならないものです他者によって記載されているように、本来のコアクラス上記たPHPDocの@propertyコメントを追加し(いずれかCI_Controllerクラスまたは別CI_phpStrom.phpファイル上記)、このような:

* 
* @property Custom $custom 
* 

しかし、このジ変数名は、このケースでは大文字と小文字を区別なるにつれて、問題を削除dn'tと私が書かなければならなかった:私の上記のコントローラのコードのための

* 
* @property Custom $Custom 
* 

を正しくクラスをピックアップします。代替は、私が「Custom_model」私のモデルクラスを呼び出す場合、このすべて大文字または小文字は関係ありませんでした面白いこと

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

(これは、モデルの宣言は大文字を使用した場合でも動作します)関数を呼び出すときに小文字を使用することです - $ Custom_modelまたは$ custom_modelにPHPDocプロパティ変数を設定すると、変更はありませんでした。

関連する問題