Codeigniter frameworkünün standart yapısında ekran çıktısı ile debug işlemi için özel bir method bulunmuyor. Bu sebeple var_dump() ya da print_r() komutlarıyla verimizi ekrana basıyoruz. Fakat bu komutların çıktıları okunabilir olmuyor. Özellikle çok elemanlı dizilerde büyük vakit kayıplarına yol açabiliyor.

Ben de bu vakit kaybını önlemek için daha okunabilir çıktılar üreten bir debugging helper hazırladım.

Öncelikle "/application/helper" dizini içerisine aşağıdaki kodları yazarak "debug_helper.php" adıyla kaydediyoruz.

if(!function_exists('_debug')) {
    function _debug($data, $stop = false) {
        echo '<pre>';
        print_r($data);
        echo '</pre>';
        if($stop)
            die;
    }
}

if(!function_exists('_query_debug')) {
    function _query_debug($stop = false) {
        $CI =& get_instance();
        _debug($CI->db->last_query(), $stop);
    }
}

"/config/autoload.php" dosyasında debug helperını sistemimize dahil ediyoruz;

$autoload['helper'] = array('debug');

Yukarıda görüldüğü gibi helper iki adet fonksiyondan oluşuyor;

_debug() fonksiyonu $data ve $stop olmak üzere iki adet parametre alıyor. $data parametresine ekrana bastıracağımız stringi veriyoruz. $stop ise varsayılan olarak false değerini alıyor. True değerini verdiğimizde scriptin çalışmasını durduruyor.

Örnek Kullanımı:

class Ornek extends CI_Controller {

    public function index() {
        $user = array(
            'user_id'  => 1,
            'username' => 'testUser',
            'password' => 123456,
            'others'   => array(
                'gender' => 'male',
                'age'    => '25',
                'city'   => 'Istanbul'
            ),
        );
        _debug($user);
    }

}

Yukarıdaki kodun çıktısı aşağıdaki gibi olacaktır;

Array
(
    [user_id] => 1
    [username] => testUser
    [password] => 123456
    [others] => Array
        (
            [gender] => male
            [age] => 25
            [city] => Istanbul
        )

)


_query_debug() fonksiyonu ise son çalıştırılan sql sorgusunu ekrana basıyor. _debug() fonksiyonunda olduğu gibi scriptin çalışmasını durdurmak istiyorsak $stop parametresine true değerini veriyoruz.

Örnek Kullanımı:

class Ornek extends CI_Controller {

    public function index() {
        $this->db->select('id,username,password')
                 ->from('users')
                 ->where('id',5);
        $this->db->get();
        _query_debug();
    }

}

Yukarıdaki kodun çıktısı da aşağıdaki gibi olacaktır;

SELECT `id`, `username`, `password` FROM `users` WHERE `id` = 5