| 
<?php
 /*
 * EXAMPLE FILE FOR PTCDEBUG CLASS
 */
 
 session_start( );                // start session for persistent debugging and code highlighter popup
 
 declare(ticks=1);                // declare globally for the code coverage and function calls trace
 
 $_GET[ 'debug' ] = true;               // turn on the debug
 
 //$_GET[ 'debug_off' ] = true;        // turn off debug
 
 require_once( '../PtcDebug.php' );    // include the PtcDebug class
 
 $options = array                // add some options before class initialization
 (
 'url_key'            =>    'debug' ,
 'url_pass'            =>    'true' ,
 'die_on_error'        =>    false ,// continue if fatal error
 'debug_console'        =>    true , // send messages to console, chrome only with php-console extension
 );
 
 PtcDebug::load( $options );        // initialize the class
 
 
 /* START CODE COVERAGE ANALYSIS TO CHECK WHICH LINES HAVE BEEN EXECUTED */
 PtcDebug::startCoverage( );    // set option['code_coverage'] to "full" to check the hole application
 
 
 /* START TRACING FUNCTION CALLS */
 PtcDebug::startTrace( );    // set option['trace_functions'] to "full" to check the hole application
 
 
 /* LOGGING A MESSAGE */
 PtcDebug::bufferLog( 'just a message' );
 
 
 /* LOGGING A VARIABLE WITH A STATEMENT */
 $var = 'just a string';
 PtcDebug::bufferLog( $var, 'testing a variable' );
 
 
 /* LOGGING AN ARRAY TO THE MESSAGE PANEL WITH A DIFFERENT CATEGORY */
 $array = array( 'key' => 'value' , 'key1' => 'value1' );
 PtcDebug::bufferLog( $array , 'testing an array' , 'new category' );
 
 
 /* LOGGING AN OBJECT */
 PtcDebug::bufferLog( ( object ) $array , 'testing an object' );
 
 
 /* THROWING A NOTICE */
 trigger_error( 'some notice' , E_USER_NOTICE );
 
 
 /* THROWING A WARNING */
 trigger_error( 'some warning' , E_USER_WARNING );
 
 
 /* THROWING AN ERROR */
 trigger_error( 'some error' , E_USER_ERROR );    // continue execution with the options "die_on_error" set to false
 
 
 /* TESTING AN ERROR WITHIN A FUNCTION */
 function some_func( ){ fopen( ); }
 echo some_func( );                        // will throw an error
 
 
 /* LOGGING SQL QUERIES AND TIMING EXECUTION */
 $sql = 'select from where something';        // some sql query, will be used as reference
 PtcDebug::bufferSql( '' , $sql  );            // leaving the first parameter empty, can be added later with the query result
 $sql_result = array( 'key' => 'value' , 'key1' => 'value1' ); // this should be the sql result of the sql query
 PtcDebug::stopTimer( $sql );                // time execution, the query is used as reference
 PtcDebug::addToBuffer( $sql , $sql_result );    // attaching the result to the message based on the reference
 
 
 /* WATCHING A VARIABLE */
 declare(ticks=1)                        // declaring code block it is more precise for watching vars
 {
 $var = 'some test';
 PtcDebug::watch( 'var' );                // passing the variable without the "$" symbol
 $var = 'some new value';                // the variable changed
 }
 
 
 /* TIMING A LOOP */
 PtcDebug::bufferLog( '' , 'timing a loop' );    // leaving the first parameter empty
 for ( $i = 0; $i < 100; $i++ ){ @$a[ ] = $i; }
 PtcDebug::stopTimer( 'timing a loop' );        // using the reference to attach the execution time to the buffer
 
 
 /* STOP CODE COVERAGE ANALYSIS */
 PtcDebug::stopCoverage( );    // we could start it again later, if stopCoverage( ) is not used it will be stopped at shutdown
 
 
 /* STOT TRACING FUNCTION CALLS */
 PtcDebug::stopTrace( );        // we could start it again later, if stopTrace( ) is not used it will be stopped at shutdown
 
 
 /* DOWLOAD PHP-CONSOLE FOR CHROME TO SEE MESSAGES IN CONSOLE */
 PtcDebug::bufferLog( '' , '<span style="color:red;">**For Chrome Browser:</span>
 <a target="_blank" href="https://chrome.google.com/webstore/detail/php-console/nfhmhhlpfleoednkpnnnkolmclajemef">
 Download php-console</a> chrome extension to see debug output in console');
 
 
 /* CATCHING AN EXCEPTION */
 throw new Exception( 'Uncaught Exception' );
 
 
 //session_destroy();
 
 
 |