2016-01-22 73 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