2016-01-22 115 views
4

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

当使用get_instance()时,所有这些功能都会消失。例如,在助手类中,我必须使用$CI = & get_instance();,然后使用$CI->Account_model->xxxx。如何通过这种方式引用库来获得自动完成功能?

[注意:这只是一个简单的例子。我真正的用法是PHPUnit的,但解决上面的例子可以让PHPUnit的工作,以及]

+0

'/ ** @var MyClassName $ CI * /'了'$ CI'实例之前? – LazyOne

+0

这将部分工作,但如果使用$ CI访问多个类(通常是),那么这不起作用。为了让一个特定的班级工作,这可以工作,虽然不理想。 – justanotherprogrammer

回答

1

要重新绑定get_instance()自动完成你之前写的属性将需要告知这是笨的一个实例,这是inturn CI_Controller

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

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

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

这正是我需要的! '@var CI_Controller'看起来很简单,但没有那个确切的语法,它就是一个不行。谢谢! – justanotherprogrammer

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() 
    { 
+0

这是我在autocomplete.php中编写的。问题是,使用'get_instance()'时不起作用,因为该类不再只被'$ usermodel'访问。它可以通过'$ CI-> usermodel-> xx'来访问。 – justanotherprogrammer