localdisk

PHP とか Java とか Web とか好きなことを書きます。

NetBeans で CodeIgniter のコード補完を行わせる冴えたやり方

CodeIgniter いいですよね!
今日は NetBeans 7.0 リリース記念に NetBeans で CodeIgniter のコード補完を行わせる冴えたやり方をご紹介しましょう!
NetBeans は phpdoc の @property に型と名称を書いておけばコード補完が効くというナイスな機能を持ってますので下記のようにやればおk。

application/core/MY_Contoroller.php

<?php

/**
 * MY_Controller
 * 
 * @author localdisk <info@localdisk.org>
 * 
 * @property CI_Loader $load
 * @property CI_Input $input
 * @property CI_Session $session
 * @property CI_Config $config
 * @property CI_Form_validation $form_validation
 * @property CI_URI $uri
 * @property Mailer $mailer
 */
class MY_Controller extends CI_Controller {

    /**
     * msg
     * 
     * @var string
     */
    public $msg;

    /**
     * __construct
     */
    public function __construct() {
        parent::__construct();
        // よく使うヘルパー・ライブラリロード
        $this->load->helper(array('url', 'form', 'html', 'common', 'security'));
        $this->load->library(array('auth'));
    }

    /**
     * model
     *
     * @param  string $name
     * @return MY_Model
     */
    public function model($name) {
        $name = $name . '_model';
        if (!isset($this->{$name})) {
            $this->load->model($name);
        }
        return $this->{$name};
    }

}

ポイントは Contoroller の基底クラス(今回の場合は上記の MY_Contoroller)に書くこと。CI_Input/CI_Loader/CI_View 等のクラスは使用頻度が高く、基底クラスに書いておけば継承したクラスにもコード補完が効くようになるのでいちいち書く手間が省けます。
Model の基底クラスには同じように

application/core/MY_Model.php

<?php
/**
 * MY_Model
 *
 * @author localdisk <info@localdisk.org>
 * @property CI_DB_active_record $db
 */
class MY_Model extends CI_Model {
}

と書いておけばおk。

最後に

NetBeans も CI も使えば使うほど楽しいのでぜひ一度手にとってみてくださいね!