Integrates PHP Debug Bar with Phalcon FrameWork.
Thanks laravel-debugbar, I use some codes of it!
- Ajax request support
- Redirect support
- persistent support
- Simple App, Mulit module App and Micro App support
- MessagesCollector : Collect custom message, support scalar, array and object
- TimeDataCollector : Collect custom time measure.
- ExceptionsCollector : Add a exception object to debugbar.
- MemoryCollector : Collect memory usage
- QueryCollector: Capture each SQL statement, measure spent time of each SQL, show EXPLAIN result of each SELECT statement
- collect infomations from the
db
service. Only for Phalcon ORM.
- collect infomations from the
- DoctrineCollector: Capture each SQL statement in Dortrine, measure spent time of each SQL.
- collect infomations from the
entityManager
service. Only for Doctrine ORM.
- collect infomations from the
- RouteCollector: Show Route info of currect request.
- collect infomations from the
router
service.
- collect infomations from the
- ViewCollector: Show all the rendered templates, measure spent time of each template, show all the templates variables.
- collect infomations from the
view
service.
- collect infomations from the
- PhalconRequestCollector: Show request headers, cookies, server variables, response headers, querys, post data,raw body
- collect infomations from the
request
service.
- collect infomations from the
- ConfigCollector: Show the data in the config service.
- collect infomations from the
config
service.
- collect infomations from the
- SessionCollectior: Show session data
- collect infomations from the
session
service.
- collect infomations from the
- SwiftMailCollector: mailer info
- collect infomations from the
mail
service.
- collect infomations from the
- LogsCollectors: Show logs of current request.
- collect infomations from the
log
service.
- collect infomations from the
- CacheCollectors: Show caches summary(saved,gets,incs,decs,failds), and each cache operation detail.
- collect infomations from the
cache
service.
- collect infomations from the
-
install
php composer.phar require --dev snowair/phalcon-debugbar
-
update
php composer.phar update snowair/phalcon-debugbar
The default directory for store debugbar data is Runtime/phalcon
. If it not exists, will try to create auto.
-
Set your App Instance to DI:
$application = new Phalcon\Mvc\Application( $di ); // Important: mustn't ignore $di param . The Same Micro APP: new Phalcon\Mvc\Micro($di); $di['app'] = $application; // Important
-
Before handle app, register and boot debugbar provider.
(new Snowair\Debugbar\ServiceProvider())->start(); // after start the debugbar, you can do noting but handle your app right now. echo $application->handle()->getContent();
\PhalconDebug::startMeasure('start-1','how long'); // startMeasure($internal_sign_use_to_stop_measure, $label)
\PhalconDebug::addMeasurePoint('start'); // measure the spent time from latest measurepoint to now.
\PhalconDebug::addMessage('this is a message', 'label'); // add a message using a custom label.
\PhalconDebug::info($var1,$var2, $var3, ...); // add many messages once a time. See PSR-3 for other methods name.(debug,notice,warning,error,...)
\PhalconDebug::addMessageIfTrue('1 == "1"', 1=='1','custom_label'); // add message only when the second parameter is true
\PhalconDebug::addMessageIfTrue('will not show', 1=='0');
\PhalconDebug::addMessageIfFalse('1 != "0" ', 1=='0'); // add message only when the second parameter is false
\PhalconDebug::addMessageIfNull('condition is null', Null ); // add message only when the second parameter is NULL
\PhalconDebug::addMessageIfEmpty('condition is emtpy', $condtion ); // add message only when the second parameter is empty
\PhalconDebug::addMessageIfNotEmpty('condition is not emtpy', $condtion=[1] ); // add message only when the second parameter is not empty
\PhalconDebug::addException(new \Exception('oh , error'));
\PhalconDebug::addMeasurePoint('stop');
\PhalconDebug::stopMeasure('start-1'); // stopMeasure($internal_sign_use_to_stop_measure)
addMessage
addMessageIfTrue
addMessageIfFalse
addMessageIfNull
addMessageIfEmpty
addMessageIfNotEmpty
addException
addMeasurePoint
startMeasure
stopMeasure
debug/info/notice/warning/error/emergency/critical
{{ debug( var1, var2 )}}
{{ info( var1, var2 )}}
{{ addMessageIfTrue('$var === true', var ) }}
Copy config/debugbar.php
to your config directory, and change any settings your want. Than use your debugbar config file by:
(new Snowair\Debugbar\ServiceProvider('your-debugbar-config-file-path'))->start();
Usually, You needn't modify any other files, if you follow rules bellow:
- All the sevices for cahce has a name with
cache
. - All the sevices for db has a name start with
db
or end withdb
.
If your service name is't match these rules, you need attach it to debugbar:
// service.php
$di->set('read-db-test',function(...)); // db service
$di->set('redis',function(...)); // cache service
if ( $di->has('debugbar') ) {
$debugbar = $di['debugbar'];
$debugbar->attachDb('read-db-test');
$debugbar->attachCache('redis');
}
-
I strongly suggest you to assign a host domain to your project, and set the baseUri of uri service to
/
. Otherwise, Phalcon debugbar may not work. -
For ajax/json request, the debug data only stored in the persistent directory as a json file. You can Load it to the debugbar form Openhandler(Open icon on the right).
-
If the debugbar does not work, the most possible reason is one or more collectors tirgger a error in the runtime. Your can modify the debugbar config file, close collector one by one, retry it until found the collector cause problem.
-
For any problem, you can open a Issue on Github.