Ketika sedang membuat program di PHP atau dengan menggunakan framework, misalnya Codeigniter. Cara seorang men-debug programnya bermacam-macam. Tapi pada dasarnya, kembali ke individu masing-masing bagaimana cara terbaik, tercepat, kenyamanan dan informatifnya.
Ada beberapa pendahuluan yang harus dipersiapkan. Pertama persiapkan PHP config sebagai pada development environtment. Misalnya di sini PHP harus dapat menampilkan error
bukan malah menyembunyikan, itu baik untuk Production environtment. Caranya adalah dengan menyeting beberapa parameter di php.ini. Konfigurasi berikut, misalnya: display_errors
, error_reporting
harus dikondisikan menajadi “On” atau disetting untuk mengeluarkan Error tertentu. Kalau tidak punya akses ke php.ini, konfigurasi ini juga dapat diubah di script PHP contohnya sebagai berikut:
ini_set('display_errors', 'On');
Tidak hanya di PHP, di Codeigniter juga ada setingan untuk fase development dengan membuang remark definisi ENVIRONMENT di file index.php yang sebenarnya adalah toggle untuk menseting konfigurasi error_reporting
.
define('ENVIRONMENT', 'development');
Kemudian kedua adalah gimana Anda mentracing script PHP tersebut. Kalau ini bisa mempergunakan echo
, var_dump
, atau print_r
untuk memperlihatkan isi variable.
Tapi untuk var_dump dan print_r ini rada memperlambat dengan adanya underscore. Belum lagi harus tambah echo ‘<pre>’; di depannya supaya muncul di layar dengan monospace font dan terstruktur dengan space dan linebreaks nya. Untuk masalah ini saya bikin fungsi global sederhana tujuannya supaya pengulangan tidak terlalu banyak. Untuk Codeigniter, dengan mudah saya membuat fungsi di dalam helper yg sering di akses. Agar ga terlalu panjang saya namai saja dump
.
function dump($var, $die=FALSE) { echo '<pre>'; var_dump($var); echo '</pre>'; if ($die) die; }
UPDATE: Kadang-kadang ada yg biasa melihat error log melalui terminal, ketika sedang coding. Mungkin bisa disisipkan di dalam fungsi line ini:
log_message('error', var_dump($var));
Jadi seperti ini:
function dump($var, $die=FALSE, $log=FALSE) { echo '<pre>'; var_dump($var); echo '</pre>'; if ($log) error_log(var_dump($var)); if ($die) die; }