找不到 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)