На самом деле я сейчас работаю с SOAP, и, что раздражает, имя ответа зависит от метода, который я вызываю. Например, один метод ответит с помощью ..
$ответ->SendOrderResult
В то время как другой отвечает с
$ответ->GetOrdersStateResult
Есть ли способ сослаться на значение, не зная имени? т.е. что-то вроде $response->*Result
2 ответа
Нет, это невозможно, вы должны быть в состоянии выяснить, какой метод вызывать, проанализировав свой код и вызвав требуемый метод после слов:
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";
}
Вы можете написать небольшую функцию для этого (при условии, что $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
.
Похожие вопросы
Новые вопросы
php
PHP — это широко используемый язык сценариев общего назначения с открытым исходным кодом, мультипарадигмальный, динамически типизированный и интерпретируемый, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.