доступ к данным в объекте php

#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 .