15

在 CodeIgniter 项目中,我通常使用以下命令来执行 sql。

$res = $this->db->select('*')
                 ->from('customer')
                 ->where('customer.id', $id)
                 ->get();

但是很遗憾我的 PHP Storm(5.0) 不支持多重自动完成(这个我不知道怎么说)

例如在 netbeans 如果我输入

$res = $this->db->select('*')->

它将自动弹出其余功能。但是在 PHPStorm 中它并没有工作。它只工作第一级自动完成。

4

2 回答 2

29

下载https://github.com/topdown/phpStorm-CC-Helpers/releases

标记为纯文本

  • /system/core/Controller.php
  • /system/core/Model.php
  • /system/database/DB_active_rec.php

然后提取下载的存档,将其复制到您的项目根目录

不过,这就是所有 Mifas 链接的功能

于 2012-11-18T05:04:34.643 回答
24

回答一个非常古老但仍然相关的问题 -

我在这里找到了一个更好的解决方案 - http://validwebs.com/346/code-completion-for-codeigniter-in-phpstorm/巧合的是,它来自同一作者/项目所有者 Jeff Behnke。

引用其中的内容,应在 Sabir 的回答中继续阅读 -

标记为纯文本

/system/core/Controller.php
/system/core/Model.php
/system/database/DB_active_rec.php

将这些文件标记为纯文本会阻止 phpStorm 将它们索引为源。

我认为链接中的解决方案更好,因为它解释了执行步骤背后的基本原理。

它还解释了我们如何在视图中实现代码完成并修复未定义的变量。

为了便于参考和保存,这里再次引用原始来源:

视图中的代码完成和修复未定义的变量。

示例控制器代码。

public function index()
{
  // Example view vars
  $data['test'] = 'Testing vars in CodeIgniter!     This is from $data["test"].';

  $this->load->view('welcome_message', $data);

}

我们以 CI 方式向视图中添加了一个数据数组。数组中的每个索引都是另一个变量。

景色……</p>

在 phpStorm 中 $test 将突出显示为未定义的 var。为了解决这个问题,我们使用 phpDoc 注释。

<p style="font-weight: bold;">
<?php
/**
 * $data array holds the $test value
 * 
 * @see Welcome::index()
 * @var Welcome $test
 */
echo $test;
?>
</p>

以这种方式记录不仅可以修复 phpStorm 错误/警告,还可以为我们提供 $test 的文档弹出窗口。@see 也将链接到它创建的位置,在本例中是 Welcome 类中的 index 方法。

var 现在已定义并显示它是。

Ctrl+ 单击此方法链接将带您进入定义 $test 的方法。

以下是我自己在为我的项目添加自定义项时的一些发现:

如果您希望 CI 中的自定义应用程序库也可用于自动完成,那么以下两种情况可能会有所帮助:

1.对于自定义扩展库如MY_Upload扩展CI_Upload类

替换@property CI_Upload $upload@property MY_Upload $uploadCI_phpstorm.php

除了 CI_Upload 之外,这将使 MY_Upload 的所有类变量和函数名称都可用于自动完成。

2. 对于在 CI 应用程序中从头开始编写的完全自定义库 -

例如,要从位于 application/libraries 文件夹中的 Custom_Library.php 启用自动完成,您需要添加到 CI_phpstorm.php 中的 php 文档@property Custom_Library $custom_library

于 2015-01-16T06:06:01.990 回答