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');