#php #object
Вопрос:
IyzipayModelThreedsInitialize Object ( [htmlContent:IyzipayModelThreedsInitialize:private] => [status:IyzipayIyzipayResource:private] => failure [errorCode:IyzipayIyzipayResource:private] => 5251 [errorMessage:IyzipayIyzipayResource:private] => Banka kartları için taksit yapılamaz [errorGroup:IyzipayIyzipayResource:private] => [locale:IyzipayIyzipayResource:private] => tr [systemTime:IyzipayIyzipayResource:private] => 1628696035608 [conversationId:IyzipayIyzipayResource:private] => 123456789 [rawResult:IyzipayApiResource:private] => {"status":"failure","errorCode":"5251","errorMessage":" Banka kartları için taksit yapılamaz","locale":"tr","systemTime":1628696035608,"conversationId":"123456789"} )
как я могу получить доступ к «ErrorMessage» в этом объекте
Комментарии:
1. Можете ли вы поделиться кодом внутри класса ThreedsInitialize?
2. В ThreedsInitialize нет никакого кода. эти данные поступают с другого сайта
3. Тогда попробуй
$obj->getErrorMessage()
. Обратите внимание, что это всего лишь дикое предположение. Лучше всего было бы увидеть код. Вы не можете напрямую получить доступ к частной собственности. Вам нужно будет использовать метод получения, чтобы получить их
Ответ №1:
Не уверен, но предполагаю, что предоставленный вами вывод является строкой, полученной при запросе другого источника данных; Вы можете использовать регулярное выражение извлечения полей JSON, подобное этому. Обратите внимание, что $responseString
это тело ответа, подобное тому, о котором вы спрашивали.
$re = '/"errorMessage":"((\\"|[^"])*)"/i';
preg_match($re, $responseString, $matches, PREG_OFFSET_CAPTURE, 0);
$errorMessage = $matches[1][0];
var_dump($errorMessage);
Например, для предоставленного ответа, о котором идет речь, результатом будет:
string(40) " Banka kartları için taksit yapılamaz"
ИМЕЙТЕ В ВИДУ, что В случае, если не было соответствия для регулярного выражения, оно будет выброшено Undefined offset
.