【问题标题】:Autocomplete Codeigniter when using get_instance()使用 get_instance() 时自动完成 Codeigniter
【发布时间】:2016-04-29 08:47:18
【问题描述】:

在 PHPStorm 中,我可以通过向 config/autocomplete.php 添加一个包含属性的文件来使用 Codeigniter 进行自动完成。 PhpStorm 能够读取此文件,并允许我快速导航到该功能并具有自动完成功能。在 autocomplete.php 中,我可以拥有 @property Account_model $Account_model,然后每当我使用 $this->Account_model->xxx 时,自动完成功能就可以工作。

当使用get_instance() 时,所有这些功能都会失效。例如,在辅助类中,我必须使用$CI = & get_instance();,然后是$CI->Account_model->xxxx。以这种方式引用库时如何让自动完成功能起作用?

[注意:这只是一个简单的例子。我真正的用法是使用 PHPUnit,但解决上面的示例将使 PHPUnit 也能正常工作。]

【问题讨论】:

  • /** @var MyClassName $CI */$CI 实例化之前?
  • 这将部分工作,但如果 $CI 用于访问多个类(通常是),那么这不起作用。要让一个特定的类工作,这可以工作,虽然不是很理想。

标签: php codeigniter phpstorm codeigniter-3


【解决方案1】:

要将get_instance() 重新绑定到您的 IDE 的自动完成功能,您需要通知它这是 CodeIgniter 的本机控制器的一个实例。哪个是CI_Controller:

/**
 * Example MyClass Library within
 * /application/libraries/
**/
class MyClass {

    /**
     * @var CI_Controller
    **/
    private $ci;

    /**
     * Init MyClass 
    **/ 
    public function __construct() 
    {
        $this->ci =& get_instance();
    }
}

【讨论】:

  • 这正是我所需要的! @var CI_Controller 看起来很简单,但如果没有确切的语法,那就不行了。谢谢!
【解决方案2】:

你可以在开始这样的课程之前尝试编写属性

<?php defined('BASEPATH') OR exit('No direct script access allowed');
/**
 * @property  usermodel $usermodel
 * @property  groupmodel $groupmodel
 * @property  tablemodel $tablemodel
 * @property  ion_auth $ion_auth
 * @property  db_table_model $db_table_model
 * @property  apimodel $apimodel
 * @property  chartmodel $chartmodel
 * @property  todomodel $todomodel
 * @property  messagemodel $messagemodel
 * @property  photomodel $photomodel
 * @property  settingsmodel $settingsmodel
 * @property  backupmodel $backupmodel
 */
class Ajax extends MX_Controller
{
  public $data;

  public function __construct()
  {

【讨论】:

  • 这就是我在 autocomplete.php 中编写的方式。问题是使用get_instance() 时不起作用,因为仅$usermodel 不再访问该类。它可以通过$CI-&gt;usermodel-&gt;xx 之类的方式访问。
猜你喜欢
  • 2012-11-21
  • 1970-01-01
  • 2012-12-27
  • 1970-01-01
  • 2011-10-11
  • 1970-01-01
  • 2017-01-15
  • 1970-01-01
  • 2012-06-04
相关资源
最近更新 更多