如何在不知道确切名称的情况下引用Object属性?

时间:2010-02-05 10:27:22

标签: php soap

我现在实际上正在使用SOAP,并且烦人地响应名称因我调用的方法而异。例如,一个方法将以..

响应

$响应 - > SendOrderResult

而另一个回应

$响应 - > GetOrdersStateResult

有没有办法在不知道名字的情况下引用该值?即类似$ response-> *结果

2 个答案:

答案 0 :(得分:0)

不,这是不可能的,你应该能够通过分析你的代码并在之后调用所需的方法来找出要调用的方法:

if (this condition)
{
  $response->SendOrderResult();
}
else
{
  $response->GetOrdersStateResult();
}

另一种可能性是使用get_class_methods函数。

$class_methods = get_class_methods(new myclass());

foreach ($class_methods as $method_name)
{
    echo "$method_name\n";
}

答案 1 :(得分:0)

你可以为此编写一个小函数(假设$response的类型为stdClass):

function extractResult($response) {
    foreach ($response as $attribute_name => $attribute_value) {
        if (strtolower(substr($attribute_name, -6)) == 'result')
            return $attribute_value;
    }
}

然后您可以通过

调用它
$result = extractResult($response);

注意:在某些情况下,该功能将无效,即如果结果属性名称不以Result结尾。