brainworxx/krexx

PHP debugger which displays information about objects and variables in it's own draggable debug output.

v4.1.2 2021-09-28 14:30 UTC

README

https://github.com/brainworxx/kreXX/actions/workflows/php.yml/badge.svg?branch=master https://api.codeclimate.com/v1/badges/c9d414a09928ede869c7/maintainability 68747470733a2f2f6170692e636f6465636c696d6174652e636f6d2f76312f6261646765732f63396434313461303939323865646538363963372f746573745f636f7665726167652e737667 https://poser.pugx.org/brainworxx/krexx/v/stable https://poser.pugx.org/brainworxx/krexx/license
kreXX logo
Key features:
  • Dumping of protected variables
  • Dumping of private variables
  • Dumping of traversable data
  • Configurable debug callbacks, which will be called on objects (if present). The output will then be dumped.
  • Analysis of the methods of objects (comments, where declared, parameters). Comment dumping supports {@inheritdoc}.
  • Output is draggable and has a closing button.
  • All features can be globally configured in a configuration file.
  • All features can be locally configured in the browser. The settings will be stored in a cookie.
  • Configurable local opening function, to prevent other developers from calling your debug commands.
  • Output can be saved to an output folder. Very useful in m2m communication.
  • Several security measures to prevent prevent hangups with too large memory usage or a timeout.
  • Benchmarking
  • Fatal error handler with a full backtrace
  • Code generation to reach the displayed values, if possible.
Analysis of an extbase query result

Analysis of an extbase query result

Installation

Manual installation

  1. Upload the whole kreXX directory to your webserver. Put it somewhere, where you are able to include it to your project.
  2. Include as early as possible the file bootstrap.php into your project. Normally this is the index.php.

Using composer

composer require brainworxx/krexx`

Our composer page can be found here: https://packagist.org/packages/brainworxx/krexx

Usage inside the PHP code

kreXX will be called from within the PHP source code:

Main analytic function

krexx($myObject);
// or as an alias:
\Krexx::open($myObject)

Benchmarking

// start the benchmark test and define a "moment" during the test
\Krexx::timerMoment('meaningful string, like started db query 123');
// display the result
\Krexx::timerEnd();

Backtrace

\Krexx::backtrace();

Fatal error handler

// PHP 5 only.
// Register the fatal error handler
\Krexx::registerFatal();
// Unregister the fatal error handler
\Krexx::unregisterFatal();

Edit your settings

// display the edit settings dialog
\Krexx::editSettings();

Scope analysis

Often enough a kreXX call will look like this:

krexx($this);

Analysing "$this" means, that all protected and private values and methods are reachable from this point inside the code. When kreXX notices this, it will analyse all reachable variables and methods of this class.

Force logging

// The following commands create a log file instead of a browser output.
\Krexx::log($myObject);
\Krexx::logBacktrace();
\Krexx::logTimerEnd();