Welcome to the Cookbook

loading...

4.4.2 Cara penggunaan Kelas Debugger

Untuk gunakan kelas debugger, pertama sekali pastikan yang Configure::read('debug') telah diset kepada nilai besar daripada 0.

dump($var)

Dump akan paparkan kandungan variable. Ia akan paparkan semua properties dan methods (jiaka ada) dari variable yang diberikan.

	$foo = array(1,2,3);
	
	Debugger::dump($foo);
	
	//outputs
	array(
		1,
		2,
		3
	)
	
	//simple object	
	$car = new Car();
	
	Debugger::dump($car);
	
	//outputs
	Car::
	Car::colour = 'merah'
	Car::make = 'Toyota'
	Car::model = 'Camry'
	Car::mileage = '15000'
	Car::acclerate()
	Car::decelerate()
	Car::stop()
  1. $foo = array(1,2,3);
  2. Debugger::dump($foo);
  3. //outputs
  4. array(
  5. 1,
  6. 2,
  7. 3
  8. )
  9. //simple object
  10. $car = new Car();
  11. Debugger::dump($car);
  12. //outputs
  13. Car::
  14. Car::colour = 'merah'
  15. Car::make = 'Toyota'
  16. Car::model = 'Camry'
  17. Car::mileage = '15000'
  18. Car::acclerate()
  19. Car::decelerate()
  20. Car::stop()
log($var, $level = 7)

Cipat satu log stack trace log semasa panggilan. Method log() akan paparkan data yang sama dengan apa yang keluarkan Debugger::dump(), tetapi kepada debug.log output buffer. Ingat bahawa anda punya direktori app/tmp (dan kandugannya) mesti boleh ditulis oleh webserver untuk log() bekerja dengan betul.

trace($options)

Kembalikan current stack trace. Setiap barisan trace termasuk juga panggilan method, dan file mana panggilan itu datang.

	//dalam PostsController::index()
	pr( Debugger::trace() );
	
	//outputs
	PostsController::index() - APP/controllers/downloads_controller.php, line 48
	Dispatcher::_invoke() - CORE/cake/dispatcher.php, line 265
	Dispatcher::dispatch() - CORE/cake/dispatcher.php, line 237
	[main] - APP/webroot/index.php, line 84
  1. //dalam PostsController::index()
  2. pr( Debugger::trace() );
  3. //outputs
  4. PostsController::index() - APP/controllers/downloads_controller.php, line 48
  5. Dispatcher::_invoke() - CORE/cake/dispatcher.php, line 265
  6. Dispatcher::dispatch() - CORE/cake/dispatcher.php, line 237
  7. [main] - APP/webroot/index.php, line 84

Diatas ialah stack trace yang dikeluarkan dengan memanggil Debugger::trace() di dalam controller action. Apabila membaca stack trace dari bawah ke atas ia menunjukkan fungsi yang sedang berjalan(stack frames). Di dalam contoh diatas, index.php panggil Dispatcher::dispatch(), yang kemudiannya memanggil Dispatcher::_invoke(). Method _invoke() pula panggil PostsController::index(). Infomasi ini sangat berguna apabila sedang bekerja dengan operasi recursive atau deep stacks, kearan ia mengenalkan fungsi mana yang sedang berjalan semasa trace().

excerpt($file, $line, $context)

Ambilkan satu kutipan dari file $path (dimana filepath yang mutlak), terangkan nombor barisan $line dengan $context nombor barisan di sekelilingnya.

	pr( Debugger::excerpt(ROOT.DS.LIBS.'debugger.php', 321, 2) );
	
	//will output the following.
	Array
	(
	    [0] => <code><span style="color: #000000"> * @access public</span></code>
	    [1] => <code><span style="color: #000000"> */</span></code>
	    [2] => <code><span style="color: #000000">    function excerpt($file, $line, $context = 2) {</span></code>

	    [3] => <span class="code-highlight"><code><span style="color: #000000">        $data = $lines = array();</span></code></span>
	    [4] => <code><span style="color: #000000">        $data = @explode("\n", file_get_contents($file));</span></code>
	)
  1. pr( Debugger::excerpt(ROOT.DS.LIBS.'debugger.php', 321, 2) );
  2. //will output the following.
  3. Array
  4. (
  5. [0] => <code><span style="color: #000000"> * @access public</span></code>
  6. [1] => <code><span style="color: #000000"> */</span></code>
  7. [2] => <code><span style="color: #000000"> function excerpt($file, $line, $context = 2) {</span></code>
  8. [3] => <span class="code-highlight"><code><span style="color: #000000"> $data = $lines = array();</span></code></span>
  9. [4] => <code><span style="color: #000000"> $data = @explode("\n", file_get_contents($file));</span></code>
  10. )

Walaupun method ini digunakan didalam, ia boleh manjadi berguna jika anda ciptakan mesej ralat anda sendiri atau log untuk situasi anda sendiri.

exportVar($var, $recursion = 0)

Tukarkan satu variable dari apa-apa jenis kepada string untuk gunakannya didalam output debug. Method ini juga gunakan oleh Debugger untuk komunikasi antara variable dalaman, dan boleh digunakan di dalam Debugger anda sendiri.

invoke($debugger)

Gantikan CakePHP Debugger dengan Error Handler baru.