【问题标题】:Simple way to assign :protected response values to php variables?将 :protected 响应值分配给 php 变量的简单方法?
【发布时间】:2018-02-16 07:09:02
【问题描述】:

这是对请求的响应的 var_dump 的一部分。我们称之为 $response:

object(NeverBounce\Object\VerificationObject)#4 (1) {
["response":protected]=>
array(9) {
["status"]=>
string(7) "success"
["result"]=>
string(7) "invalid"
...

我知道如何访问 $response 的数组值并将它们分配给变量:

$var1 = response->[status];
$var2 = response->[result];

除了一个小问题... :protected 附加到响应中。

将状态和结果分配给 $var1 和 $var2 时如何引用它们?由于数组的受保护状态,上面的语法不起作用。 我确实阅读了有关受保护、私有、公共的手册和其他帖子,但是在这方面是新手,这没有什么意义。

也许我在幻想,但似乎必须有一个简单的方法来做到这一点。

请指教。感谢所有帮助和 cmets。

【问题讨论】:

标签: php arrays variables request response


【解决方案1】:

您可以尝试使用Reflection 中的PHP

反射的维基百科定义~

计算机程序检查和修改数据的能力 结构和行为(特别是值、元数据、属性 和函数)在运行时的程序。 [Reflection (computer_programming)]

在这种情况下,您可能希望使用反射来检查对象的属性并将受保护的属性 _data 设置为可访问

这是一个关于如何使用 PHP 反射获取 private/protected 参数的示例:

$reflector = new \ReflectionClass($object);
$classProperty = $reflector->getProperty('_data');
$classProperty->setAccessible(true);
$data = $classProperty->getValue($object);

【讨论】:

    【解决方案2】:

    您可以将对象类型转换为数组并像普通数组值一样访问它,就像这样

    $array =  (array) $yourObject;
    $status = $array['response']['status'];
    $result = $array['response']['result'];
    

    【讨论】:

    • 感谢您的回复!我接受了您的建议,并按预期得到了数组。但是,现在属性名称前面有一个星号。 $email_addr_valid = $nb_request->[*response][result];回声 $email_addr_valid;产生一个空屏幕。有什么建议吗?
    • 您是否尝试在没有 aesterik 的情况下打印它,例如 [response][result] ?
    猜你喜欢
    • 2016-12-14
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 2011-02-23
    • 2015-03-12
    • 1970-01-01
    相关资源
    最近更新 更多