找不到 PhpStorm CodeIgniter 类

Posted

技术标签:

【中文标题】找不到 PhpStorm CodeIgniter 类【英文标题】:PhpStorm CodeIgniter class not found 【发布时间】:2013-11-27 20:53:18 【问题描述】:

你能帮我解决这个问题吗?我是 CodeIgniter 和 phpStorm 的新手,我遇到了问题。 PhpStorm IDE 显示错误,即使代码工作正常(Persons(controller) 类找不到 Person(model) 类)。

$data['persons']=$this->**person**->get_person(); = 在 Persons 类的语法中,有一条消息“在类 Persons 中找不到字段 person”。

你能告诉我如何解决这个问题,但实际上输出很好,它可以毫无问题地检索数据,只是Persons类中的警告消息。

【问题讨论】:

你的模型类命名正确吗? CodeIgniter 有命名/大小写规则。另外,你那里有构造函数,对吧? 我的模型类的名称是“Person”,而我的控制器是“Persons”。 你想用这个/* @var \person $data */ 达到什么目的? DA 我了解您将 $data 变量声明为 Person 类的实例的内容。还是别的什么? 【参考方案1】:

person 属性 ($this->property) 没有显式声明,因为它是通过 PHP 的魔术方法创建和访问的。

PhpStorm 对 CodeIgniter 框架没有特殊支持,无法猜测$this->person 来自哪里以及它是什么类型。

但是你可以帮助 IDE——在实际类之前只是一个小的 PHPDoc 注释——使用 @property 标签。

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

...哦,神奇——它有效:

【讨论】:

【参考方案2】:

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 则不会发生任何变化...

【讨论】:

【参考方案3】:

通常,大多数人将“_model”后缀添加到Model 类名称中。我建议你用“Person_model”重命名你的模型,像这样调用你的模型“person_model”:

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

我认为您可能会发现它是一个适当的解决方案!

【讨论】:

我尝试将模型类的名称更改为“person_model”,但没有任何改变。 我认为问题出在phpstorm上,因为我成功检索到了数据。 我认为问题是你的问题不清楚。您问的是 IDE ERROR 不是实际的代码问题,对吗?这不是很清楚。 不,它是 PHPStorm,不需要为每个模型类名称添加额外的 _model。 LazyOne是对的,用phpdoc cmets就可以了。

以上是关于找不到 PhpStorm CodeIgniter 类的主要内容,如果未能解决你的问题,请参考以下文章

PhpStorm 内置服务器:找不到类“路由”(Laravel)

PhpStorm Laravel 4.2 致命错误:找不到类“TestCase”

PHPStorm 和 CodeIgniter 路由问题

在 codeigniter 上找不到对象

无缘无故找不到Codeigniter 404页面

找不到对象! codeigniter 项目中的错误 404