Debug Kit – pokročilé debugovanie v CakePHP
publikované: od: Tibor PiňoDebugovacie nástroje a samotné debugovanie sú dôležitou súčasťou každého vývoja. V dnešnom článku si predstavíme pokročilý debugovací nástroj Debug Kit.
Poďme si najprv priblížiť jednotlivé vlastnosti Debug Kit a následne sa pozrieme na jeho inštaláciu a integráciu s CakePHP aplikáciou.
Debug Kit
Debug Kit predstavuje pokročilý debugovací nástroj, ktorý ponúka množstvo informácií o našej aplikácii a jej stave. Debug Kit dokáže zobraziť podrobné informácie o session, sql, request, timer, premenných atď. Poďme sa teda bližšie pozrieť na jednotlivé vlastnosti tohto nástroja.
Panely
Debug Kit zobrazuje vyššie spomínané debug informácie v paneloch. Na nasledujúcom obrázku môžeme vidieť integráciu Debug Kit do stránky a taktiež základné panely, ktoré ponúka Debug Kit v základnej inštalácii.
Medzi základné panely patria: History, Session, Request, Sql Log, Timer, Log, Variables. Poďme si teda bližšie priblížiť jednotlivé možnosti panelov.
Panel History
Panel History zobrazuje informácie o posledných requestoch zobrazením url danej stránky.
Panel Session
Panel Session zobrazuje podrobné informácie o uložených Session našou aplikáciou.
Panel Request
Panel Request zobrazuje informácie o aktuálnom requeste. Medzi informácie patria GET, POST požiadavky, Cake url parametre (v aplikácii dostupné v poli $this->params), Cookie informácie a podrobné informácie o použitých routovacích pravidlách.
Panel SQL Log
Panel SQL Log zobrazuje informácie o spustených sql dotazoch v našej databáze. V podstate sa ničím nelíši od bežného sql výpisu z CakePHP.
Panel Timer
Panel Timer zobrazuje podrobné informácie o čase načítavania jednotlivých častí našej aplikácie pre daný request a taktiež množstvo využitej pamäte. Časové informácie sa zobrazujú pre stránku ako celok, ale rovnako aj pre jednotlivé súčasti, ktoré boli generované v danom requeste.
Debug Kit nám poskytuje možnosť merať čas pre ľubovoľnú časť kódu. Ako môžeme vidieť na obrázku vyššie, vo výpise sa nachádza položka s názvom Listing of articles. Táto položka meria čas spracovania výpisu článkov v metóde index v controlleri ArticlesController. Kód pre danú položku vyzerá následovne
function index() {
DebugKitDebugger::startTimer($name = 'articles', $message = 'Listing of articles');
$this->Article->recursive = 1;
$this->paginate = array('limit'=>Configure::read('Homepage.articles'),'order' => 'Article.created desc','conditions'=>array('show_on_index'=>1,'visible'=>1,'publish_up<=now()')); $this->set('articles', $this->paginate());
DebugKitDebugger::stopTimer($name = 'articles');
}
Panel Log
Panel Log nám zobrazuje informácie zo základných debugovacích nástrojov priamo z CakePHP. Jedná sa o výpisy z logovacích súborov.
Panel Variables
Panel Variables zobrazuje podrobné informácie o premenných a ich hodnotách v našej aplikácii, ktoré boli inicializované v controlleri.
Vlastné panely
Debug Kit taktiež ponúka možnosť vytvoriť si vlastné panely alebo zobraziť len určité panely z tých, ktoré sú prednastavené. Táto časť je veľmi jednoduchá a jej štúdium prenechám čitateľom. Bližšie informácie môžete násjť na stránkach Debug Kit – Toolbar Panels
Inštalácia
Inštalácie Debug Kit je veľmi jednoduchá. Stačí si stiahnuť zdrojové kódy priamo z download stránok projektu. Aktuálna verzia v dobe písania článku je Debug Kit 1.1. Po stiahnutí Debug Kit stačí obsah balíčku nakopírovať do adresára app/plugins/debug_kit a vložiť nasledovný kód do požadovaného controllera, v našom prípade sa jedná o ArticlesController v súbore app/controllers/articles_controller.php
class ArticlesController extends AppController {
var $components = array('DebugKit.Toolbar');
}
Integrácia s FirePHP
Veľmi zaujímavou vlastnosťou Debug Kit je možnosť integrácie tohto nástroja s debugovacím nástrojom FirePHP. FirePHP umožňuje debugovať PHP aplikáciu pomocou známeho nástroja FireBug.
Týmto je náš článok u konca. Myslím si, že Debug Kit je jedným s najlepších debugovacích nástrojov pre CakePHP a určite stojí za vyskúšanie. Rád uvítam vaše nápady a pripomienky k debugovaniu v CakePHP.







