bonemeijer / smartdump
A smarter alternative to var_dump for PHP8.3+
Installs: 16 646
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 1
Forks: 0
Open Issues: 1
pkg:composer/bonemeijer/smartdump
Requires
- php: >=8.3.0
Requires (Dev)
- bonemeijer/phpunit-extensions: ^0.1.2
- phpunit/phpunit: ^12.4.1
README
A smarter alternative to var_dump for PHP8.3+
The goal is to provide a friendly debug tool that is framework independent and works across multiple environments.
Installing
This project is still in beta. Backwards incompatible changes might be introduced during this time.
composer require --dev bonemeijer/smartdump
Basic usage
By default, SmartDump is configured to detect where you are debugging from and will output either plaintext or html. For example: when you dump from the commandline, a plaintext output is used. But when you are debugging from a browser, an interactive HTML output is used.
There is a main SmartDump class, which provides a friendly global interface to debug a variable anywhere
in your code. But don't worry, you can use and configure your own instances too.
\SmartDump\SmartDump::dump($variable);
Shortcut functions
Even easier are the shortcut functions. These live in the global namespace so you don't have to do any imports when you quickly want to debug a variable.
Available functions:
smartdump($variable)- shortcut for\SmartDump\SmartDump::dump($variable);smartdump_text($variable)- dump plaintext to outputsmartdump_html($variable)- dump simplehtml to outputsmartdump_text_stream- dump plaintext to a file or urld($variabe)- dump a context aware format to outputo($variabe)- dump a context aware format to output, clear output buffer and exit()
TIP - the shortcut function smartdump() uses the global SmartDump class, so you can configure the desired
behaviour through the SmartDump class.
Advanced usage
SmartDump will internally convert any passed variable to a Node using a NodeFactory. These Nodes will then be passed to a Dumper, which will accept Formatter to render an output format.
Nodes
A Node is basically an internal representation of a variable. The DefaultNodeFactory has support for
all regular PHP variable types like booleans, strings, integers, floats, arrays, objects, resources and
NULL values.
Formatters
A formatter formats the Node to output that can be handles by a Dumper. At this time there are only string type formatters, which will render a Node to a string.
By default, the ContextAwareStringFormatter will be used, which will return a formatter based on where
you are debugging from.
Available formatters:
PlainTextStringFormatter- formats to plaintext, for use in commandline and other text based environmentsDomStringFormatter- can use aMarkupdocument to output HTML (or someday XML or any other markup language)ContextAwareStringFormatter- switches between plaintext and dom based on the current environmentCallBackStringFormatter- accepts callbacks to determine which formatter is used
To globally use a different formatter for all SmartDump::dump() calls:
\SmartDump\SmartDump::setFormatter( new \SmartDump\Formatter\StringFormatter\PlainTextStringFormatter() );
Dumpers
A Dumper will determine how the formatted node will be handled. By default, the OutputDumper is used,
which will just echo the output to the screen.
Available dumpers:
OutputDumper- simply echo's the outputStreamDumper- dumps the formatted output to a file or stream
To globally use a different dumper for all SmartDump::dump() calls:
\SmartDump\SmartDump::setDumper( new \SmartDump\Dumper\StreamDumper('output.txt') );
Deployment
Don't. Don't deploy debug tools. Which is why I recommend using the --dev flag during installation.
Versioning
SmartDump uses SemVer for versioning. For the versions available, see the tags on this repository.
Authors
- Maurice Bonemeijer - Initial work - Bonemeijer
See also the list of contributors who participated in this project.
License
This project is licensed under the MIT License - see the LICENSE file for details