Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to get zend studio autocomplete with codeigniter

I'm looking for a good way to get autocomplete and click-for-reference (whatever that's called) for libraries in codeigniter working in Zend Studio for Eclipse.

for instance, if i do $this->load->library('dx_auth'); $this->dx_auth->get_user_id();

zend studio doesn't know what it is..

There is this sortof hacky way to do it (see below, source), but i feel like there should be a better way of doing it..

Anyone have any ideas?

// All of these are added so I get real auto complete
// I don't have to worry about it causing any problems with deployment
// as this file never gets called as I'm in PHP5 mode

// Core CI libraries
$config = new CI_Config();
$db = new CI_DB_active_record();
$email = new CI_Email();
$form_validation = new CI_Form_validation();
$input = new CI_Input();
$load = new CI_Loader();
$router = new CI_Router();
$session = new CI_Session();
$table = new CI_Table();
$unit = new CI_Unit_test();
$uri = new CI_URI();
like image 410
Stephen Fuhry Avatar asked Jul 03 '09 16:07

Stephen Fuhry


2 Answers

Add CI's library path as an include path to your project.

  1. In the PHP Explorer, open your project and right-click on Include Paths
  2. Select Configure from the context menu
  3. Then in the include path dialog, select the Library tab
  4. Click Add External Folder...
  5. Browse to a local copy of CI and choose it's library directory (wherever it keeps those class files)
  6. Click Done

Voila, there you go!

I should note that you can also define include paths at the time of project creation.

like image 128
Peter Bailey Avatar answered Oct 01 '22 15:10

Peter Bailey


As Peter's answer instructs, adding an include path is definitely the best way to go. However, this relies on the docblocks in the CI source code to be complete, accurate, and not ambiguous. For example, if a methods @return is declared as Some_Class|false, the autocompletion won't know what to do with it.

To add to Peter's answer, you can also force PDT/Eclipse/ZSfE to treat any variable as an instance of a particular class like so:

/* @var $varName Some_Class_Name */
like image 34
jason Avatar answered Oct 01 '22 14:10

jason