Ech*_*sen 9 php codeigniter code-completion codeigniter-2 phpstorm
你能帮我解决这个问题.我是CodeIgniter和PhpStorm的新手,我遇到了问题.PhpStorm IDE显示错误,即使代码工作正常(Persons(控制器)类无法找到Person(模型)类).



$data['persons']=$this->**person**->get_person();=在Persons类的这个语法上,有一条消息" person在类中找不到字段Persons".
你能告诉我如何解决这个问题,但实际上输出是好的,它会在Persons课堂上检索数据而不会发出警告信息.
Laz*_*One 18
该person属性($this->property)被创建,并通过PHP的魔术方法来访问它没有明确声明.
PhpStorm没有对CodeIgniter框架的特殊支持,也无法猜测$this->person它来自哪里以及它是什么类型.
但您可以使用@property标记帮助IDE - 在实际类之前只是一个小的PHPDoc注释.
/**
* @property Person $person Optional description
*/
class Persons extends CI_Controller {
Run Code Online (Sandbox Code Playgroud)
......而且魔术 - 它有效:

LazyOne 的答案最初对我不起作用。经过一些测试后,我发现我的问题与如何在 PHPDoc 中声明属性有关的大写/小写字母有关 - 希望以下观察结果可以帮助其他人。这是我必须声明我的模型类的内容:
class Custom extends CI_Model {}
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我按以下方式加载和使用模型:
$this->load->model('Custom')
$table = $this->Custom->get();
Run Code Online (Sandbox Code Playgroud)
现在,为了让 phpStorm 正确获取此类,我最初在核心类上方添加了 PHPDoc @property 注释,如其他人所述(在 CI_Controller 类上方或单独的 CI_phpStrom.php 文件上方),如下所示:
*
* @property Custom $custom
*
Run Code Online (Sandbox Code Playgroud)
但是,这并没有消除问题,因为在这种情况下变量名称区分大小写,我必须编写:
*
* @property Custom $Custom
*
Run Code Online (Sandbox Code Playgroud)
让我的上面的控制器代码正确地拾取类。另一种方法是在调用函数时使用小写字母(即使您的模型声明使用大写字母,这也有效)
$this->load->model('custom')
$table = $this->custom->get();
Run Code Online (Sandbox Code Playgroud)
有趣的是,如果我将模型类称为“Custom_model”,所有这些大写或小写都无关紧要 - 那么如果将 PHPDoc 属性变量设置为 $Custom_model 或 $custom_model ,它不会发生任何变化...
Suv*_*ker -1
通常大多数人都会在类名中添加 \xe2\x80\x98 _model\xe2\x80\x99 后缀Model。我建议您将模型重命名为“Person_model”,将模型命名为“person_model”,如下所示:
$this->load->model(\'person_model\');\n$this->person_model->get_person();\nRun Code Online (Sandbox Code Playgroud)\n\n我认为您可能会发现它是一个足够的解决方案!
\n