simivar / reverse-print-r
Library to reverse print_r output to PHP objects, arrays and scalar values.
Installs: 1 049
Dependents: 0
Suggesters: 0
Security: 0
Stars: 15
Watchers: 3
Forks: 1
Open Issues: 3
Requires
- php: ^7.1
Requires (Dev)
- ergebnis/composer-normalize: ^2.2
- friendsofphp/php-cs-fixer: ^2.16
- infection/infection: ^0.15.3
- phpbench/phpbench: @dev
- phpunit/phpunit: ^9.0
- vimeo/psalm: ^3.9
This package is auto-updated.
Last update: 2025-02-15 10:56:40 UTC
README
This library provides six different handlers for reversing output of PHP's print_r
function back to original variables.
If there's no handler available for a type it's returned as string
.
Assumptions
- all values should be type-casted, not returned as
string
- empty string (
""
) is treated asnull
(seeNullHandler
) - integers are treated as integers (no
boolean
support) - multi-level
array
MUST be supported with type-casting public
,protected
andprivate
properties of Objects MUST be supported with type-casting
Known issues
- no support for Object Inheritance
Installation
Package is available via Composer.
composer require simivar/reverse-print-r
Usage
<?php $print_r_output = print_r([ 'string' => 'some text', 'integer' => 1, 'float' => 2.3, 'subArray' => [ 'Hello World.', ], ], true); $reverser = new \ReversePrintR\ReversePrintR($print_r_output); echo $reverser->reverse()['float']; // outputs "2.3"
Changing behavior of Handlers
All handlers are defined as final
, but thanks to Dependency Injection it's easy to change the behavior of library
and it's type-casting. Let's say you want to keep all the empty strings ""
as string, not null
. All you have to do
is create your own HandlerRunner
without NullHandler
.
<?php $print_r_output = print_r([ 'string' => '', 'null' => null, ], true); $handlerRunner = new \ReversePrintR\HandlerRunner( new \ReversePrintR\Handler\FloatHandler(), new \ReversePrintR\Handler\IntegerHandler(), new \ReversePrintR\Handler\ArrayHandler(), new \ReversePrintR\Handler\ObjectHandler() ); $reverser = new \ReversePrintR\ReversePrintR($print_r_output, $handlerRunner); var_dump($reverser->reverse()['null']); // outputs ""
Own Handlers
The same way to removed NullHandler
you can add your own handlers. All you have to do is make sure that it implements
\ReversePrintR\Handler\HandlerInterface
and you are good to go.
Versioning
Library is following Semver. All minor and patch updates are backwards compatible.
License
Please see the license file for more information.