使用get_instance()

时间:2016-01-22 16:55:19

标签: php codeigniter phpstorm codeigniter-3

在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工作。]

2 个答案:

答案 0 :(得分:2)

要将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();
    }
}

答案 1 :(得分:0)

你可以尝试在开始上课之前写一下属性吗

<?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()
  {