找不到PhpStorm CodeIgniter类

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)

......而且魔术 - 它有效: 在此输入图像描述


hob*_*_VT 5

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”,如下所示:

\n\n
$this->load->model(\'person_model\');\n$this->person_model->get_person();\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n