【问题标题】:How to enable Auto Complete in PHPStorm for CodeIgniter framework如何在 PHPStorm 中为 CodeIgniter 框架启用自动完成
【发布时间】:2012-10-01 09:05:39
【问题描述】:

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

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

可惜我的PHP Storm(5.0)不支持多重自动补全(我不知道怎么说)

例如在 netbeans 中如果我输入了

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

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

【问题讨论】:

标签: codeigniter autocomplete phpstorm


【解决方案1】:

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

标记为纯文本

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

然后解压下载的存档,复制到你的项目根目录

仅此而已 Mifas 链接也可以做同样的事情

【讨论】:

  • 我尝试通过在 my_models.php @property user_model $user_model 中添加这一行来添加我的自定义模型,但我无法在自动完成中访问我的 user_model 函数。
  • 你的 phpStrom 版本是多少?
  • 这对你的情况也很方便drsaada.blogspot.com/2013/10/…@Wasim
【解决方案2】:

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

我在这里找到了更好的解决方案 - 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 方式向视图添加了一个数据数组。数组中的每个索引 是另一个变量。

景色……

在 phpStorm 中 $test 将被突出显示为未定义的变量。解决这个问题 我们使用 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 也将链接 到它被创建的位置,在本例中是 index 方法 欢迎上课。

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

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

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

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

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

在 CI_phpstorm.php 中将 @property CI_Upload $upload 替换为 @property MY_Upload $upload

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

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

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

【讨论】:

  • 是的,这个答案本质上是一个仅链接的答案,并且在低质量帖子的审核队列中。请更新!
  • @oɔɯǝɹ 感谢您查看我的第一篇文章。已按照建议进行了修改。希望你觉得它们合适。
  • @Shrenik 感谢您的更新。我也标记了另一个(已接受)答案以供审核,因为这是一个更糟糕的仅链接答案。
  • CI 3.0 的任何解决方案?
  • @DavorBramorPečnik 上述步骤在 CI 3.0 中不起作用吗?如果没有,你有什么具体的。我不再从事 CI 工作。
猜你喜欢
  • 2012-06-26
  • 2014-12-24
  • 1970-01-01
  • 1970-01-01
  • 2017-07-13
  • 2017-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多