simivar/reverse-print-r

一个库,用于将PHP的print_r输出的结果逆转换为PHP对象、数组和标量值。

v1.0.1 2020-03-20 12:57 UTC

This package is auto-updated.

Last update: 2024-09-15 10:13:28 UTC


README

此库提供六个不同的处理程序,用于将PHP的print_r函数的输出逆转换回原始变量。如果没有为某种类型提供处理程序,则将其作为string返回。

假设

  • 所有值都应该进行类型转换,而不是作为string返回
  • 空字符串("")被视为null(请参阅NullHandler
  • 整数被视为整数(不支持boolean
  • 多级array必须支持类型转换
  • publicprotectedprivate属性的对象必须支持类型转换

已知问题

  • 不支持对象继承

安装

此包可通过Composer获取。

composer require simivar/reverse-print-r

使用方法

<?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"

更改处理程序的行为

所有处理程序都定义为final,但得益于依赖注入,可以轻松更改库及其类型转换的行为。假设您想保留所有空字符串""作为字符串,而不是null。您只需创建自己的不带NullHandlerHandlerRunner即可。

<?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 ""

自定义处理程序

与移除NullHandler相同的方式,您可以添加自己的处理程序。您只需确保它实现了\ReversePrintR\Handler\HandlerInterface即可。

版本控制

库遵循Semver。所有次要和补丁更新都是向后兼容的。

许可证

有关更多信息,请参阅许可证文件