Eclipse で CodeIgniter のコード補完

Eclipse で CodeIgniter のコード補完を使えるようにする方法です。
http://www.gostomski.co.uk/codeigniter/getting-full-auto-complete-with-codeigniter-in-eclipse より。

(1/26 追記) Eclipse で CodeIgniter 2.0 のコード補完 も参照してください。

CodeIgniter 1.7 の場合

system/codeigniter/Base5.php のコンストラクタの最後に以下のコードを追加します。

$agent = new CI_User_agent();
$benchmark = new CI_Benchmark();
$calendar = new CI_Calendar();
$cart = new CI_Cart();
$config = new CI_Config();
$db = new CI_DB_active_record();
$email = new CI_Email();
$encrypt = new CI_Encrypt();
$form_validation = new CI_Form_validation();
$ftp = new CI_FTP();
$image_lib = new CI_Image_lib();
$input = new CI_Input();
$lang = new CI_Language();
$output = new CI_Output();
$pagination = new CI_Pagination();
$parser = new CI_Parser();
$session = new CI_Session();
$table = new CI_Table();
$trackback = new CI_Trackback();
$typography = new CI_Typography();
$unit = new CI_Unit_test();
$upload = new CI_Upload();
$uri = new CI_URI();
$xmlrpc = new CI_Xmlrpc();
$xmlrpcs = new CI_Xmlrpcs();
$zip = new CI_Zip();

つまり、以下のようにします。

	public function CI_Base()
	{
		self::$instance =& $this;
		
		// コード補完のため
		$agent = new CI_User_agent();
		$benchmark = new CI_Benchmark();
		$calendar = new CI_Calendar();
		$cart = new CI_Cart();
		$config = new CI_Config();
		$db = new CI_DB_active_record();
		$email = new CI_Email();
		$encrypt = new CI_Encrypt();
		$form_validation = new CI_Form_validation();
		$ftp = new CI_FTP();
		$image_lib = new CI_Image_lib();
		$input = new CI_Input();
		$lang = new CI_Language();
		$output = new CI_Output();
		$pagination = new CI_Pagination();
		$parser = new CI_Parser();
		$session = new CI_Session();
		$table = new CI_Table();
		$trackback = new CI_Trackback();
		$typography = new CI_Typography();
		$unit = new CI_Unit_test();
		$upload = new CI_Upload();
		$uri = new CI_URI();
		$xmlrpc = new CI_Xmlrpc();
		$xmlrpcs = new CI_Xmlrpcs();
		$zip = new CI_Zip();
	}

これで、コントローラで、例えば、

$this->input->

と入力し、コード補完のキー(alt + / または Ctrl + space)を押せば補完されました!

CodeIgniter 2.0 の場合

先ほどのブログにはありませんでしたが、system/core/Controller.php のコンストラクタに同じくコードを追加します。

現在の CodeIgniter Reactor だと、こうします。

	public function __construct()
	{
		self::$instance =& $this;
		
		// Assign all the class objects that were instantiated by the
		// bootstrap file (CodeIgniter.php) to local class variables
		// so that CI can run as one big super object.
		foreach (is_loaded() as $var => $class)
		{
			$this->$var =& load_class($class);
		}

		$this->load =& load_class('Loader', 'core');

		$this->load->_base_classes =& is_loaded();

		$this->load->_ci_autoloader();

		log_message('debug', "Controller Class Initialized");
		
		// コード補完のため
		$agent = new CI_User_agent();
		$benchmark = new CI_Benchmark();
		$calendar = new CI_Calendar();
		$cart = new CI_Cart();
		$config = new CI_Config();
		$db = new CI_DB_active_record();
		$email = new CI_Email();
		$encrypt = new CI_Encrypt();
		$form_validation = new CI_Form_validation();
		$ftp = new CI_FTP();
		$image_lib = new CI_Image_lib();
		$input = new CI_Input();
		$lang = new CI_Language();
		$output = new CI_Output();
		$pagination = new CI_Pagination();
		$parser = new CI_Parser();
		$session = new CI_Session();
		$table = new CI_Table();
		$trackback = new CI_Trackback();
		$typography = new CI_Typography();
		$unit = new CI_Unit_test();
		$upload = new CI_Upload();
		$uri = new CI_URI();
		$xmlrpc = new CI_Xmlrpc();
		$xmlrpcs = new CI_Xmlrpcs();
		$zip = new CI_Zip();
	}