10

これについて私を助けてもらえますか。私は CodeIgniter と PhpStorm の初心者で、問題があります。PhpStorm IDE は、コードが正常に動作しているにもかかわらず、エラーを表示しています((コントローラー) クラスが(モデル) クラスPersonsを見つけることができません)。Person

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

$data['persons']=$this->**person**->get_person();= クラスからのこの構文Personsでは、「フィールドpersonがクラスに見つかりません」というメッセージがありますPersons

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

4

3 に答える 3

19

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

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

ただし、@property タグを使用して、IDE (実際のクラスの前の小さな PHPDoc コメント) を支援できます

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

...そして魔法のように -- 動作します: ここに画像の説明を入力

于 2013-11-14T18:29:51.787 に答える
4

LazyOne からの回答は、最初はうまくいきませんでした。いくつかのテストの後、PHPDoc でプロパティを宣言する方法に関連する大文字/小文字の問題であることがわかりました。次の観察が他の人の助けになることを願っています。これは、モデル クラスを宣言する必要があるものです。

class Custom extends CI_Model {}

私のコントローラーでは、たとえば次のようにモデルをロードして使用します。

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

phpStorm がこのクラスを正しく取得するために、私は最初に他の人が説明したようにコア クラスの上に PHPDoc @property コメントを追加しました (CI_Controller クラスまたは別の CI_phpStrom.php ファイルの上)。

*
* @property Custom $custom
*

ただし、この場合、変数名は大文字と小文字が区別されるため、次のように記述しなければならなかったため、これで問題は解決しませんでした。

*
* @property Custom $Custom
*

上記のコントローラーコードがクラスを正しく取得するため。別の方法として、関数を呼び出すときに小文字を使用することもできます (これは、モデル宣言で大文字を使用した場合でも機能します)。

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

面白いことに、モデル クラスを "Custom_model" と呼んでも、このすべての大文字または小文字は問題ではありませんでした。その後、PHPDoc プロパティ変数を $Custom_model または $custom_model に設定しても変化はありませんでした ...

于 2014-06-11T02:44:03.893 に答える
-1

Model通常、ほとんどの人はクラス名に '<code>_model' サフィックスを追加します。モデルの名前を「Person_model」に変更し、次のようにモデルを「person_model」と呼ぶことをお勧めします。

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

私はあなたがそれを適切な解決策だと思うかもしれないと思います!

于 2013-11-14T17:49:33.417 に答える