Notatki PHP

prywatne zapiski na kamieniu

Podczas zabawy z kodowaniem, warto móc sprawdzać wartości tablic lub zmiennych - tu może nam przyjść z pomocą funkcja pr, gdzie w nawiasach podajemy zmienną lub tablicę, której zawartością jesteśmy w danym momencie zainteresowani, np.: pr($moja_zmienna);

To spowoduje wyrzucenie na ekran zawartości $moja_zmienna.

 
// micro debuger	
	 function pr($str){
        echo('<pre>');
        echo '$str: ';
      print_r($str);
        echo('</pre >');
        $d = debug_backtrace();
        echo $d[0]['file'] . '<br />Line: <b>' . $d[0]['line'] . '</b>';
        echo '<hr />';
 
 
	if ( (array) $str !== $str ) {
			//is not an array
	$str = serialize($str);		
    file_put_contents('!!!zmienna.txt', $str);
	print_r(unserialize(file_get_contents('!!!zmienna.txt')));	
	} else { 
		// is an array
    $str = serialize($str);
	file_put_contents('!!!tablica.txt', $str);
	print_r(unserialize(file_get_contents('!!!tablica.txt'))); 
	} 
  }	
// end ////	

Wersja mini, bez zapisu do plików tych wartości:

 
 
//// Razor microdebuger    ////
   function pokaz($rvariable){
        echo('<pre>');
     echo "n $rvariable";
   // var_dump(debug_backtrace());       
      print_r($rvariable);
        echo('</pre >');
        $d = debug_backtrace();
        echo $d[0]['file'] . '<br />Line: <b>' . $d[0]['line'] . '</b>';
    debug_print_backtrace();
        echo '<hr />';
   }
// end ////////////////////////////////

 

W RazorCMS używamy tekstowej bazy danych, gdzie możemy sprawdzić zawartość tej bazy - tabeli wywołując plik php leżący razem z plikiem tabeli, tu razor_data.txt:

 
<?php
//// debuger	
	function pr($str){ 
        echo('<pre>');
        echo '$str: ';
		print_r($str);
        echo('</pre >'); 
        $d = debug_backtrace(); 
        echo $d[0]['file'] . '<br />Line: <b>' . $d[0]['line'] . '</b>';
        echo '<hr />'; 
	}
 
  $data = file("razor_data.txt");
  $data = stripslashes($data[0]); // catches it in some message above
  $postData = unserialize($data);
     extract($postData, EXTR_OVERWRITE);
	pr($postData);
 
?> 

Na ekranie wyświetli się cała struktura tablicowa tabeli, co pozwala śledzić dokonywane w niej zmiany podczas modyfikacji czy działania nowych modułów.

W sytuacji, kiedy chcemy wspomóc się śledzeniem wartości zmiennych w trakcie pisania modułów do CMS'a, z pomocą może nam przyjść Tracy Debuger.

W Razor CMS tworzymy katalogi src i vendor, do których trafić mają pobrane przy pomocy nieszczęsnego composera pliki tego debugera.

Kolejnym krokiem jest stworzenie sobie środowiska testowego na localhost, gdzie aby Tracy Debuger mógł działać, na początek pliku core/public_func.php dopisujemy:

 
require RAZOR_BASE_PATH.'/vendor/autoload.php';
require RAZOR_BASE_PATH.'/src/tracy.php';
use TracyDebugger;
Debugger::enable(Debugger::DETECT, RAZOR_BASE_PATH.'log');

Nastepnie w pliku php nowo tworzonego modułu dopisujemy na początku linię:

 
require RAZOR_BASE_PATH.'/vendor/autoload.php';

Wtedy w badanym skrypcie, gdy chcemy zobaczyć jak wygląda zmienna, dodajemy linię która spowoduje wyświetlenie zawartości w nowym okienku:

 
bdump($actual_ip, 'adres ip');