Пытаюсь получить данные из Json, но ничего не получается.
Функция
public function getItem($id)
{
$response = @json_decode($this->request('GET', 'https:// site.ru/ap/my/op?search=' . $id)['body'], true);
if (isset($response['error'])) {
throw new Exception($response['error']);
}
return new MyItem($response);
}
Отдает
var_dump ($items);
object(MyItem)#120 (1) {
["data":protected]=>
array(1) {
[0]=>
array(16) {
["dtoType"]=>
string(7) "partner"
["id"]=>
int(3228933)
["userId"]=>
int(571106)
["sellerReward"]=>
float(180)
["createdAt"]=>
string(24) "2019-08-16T05:18:05.309Z"
["status"]=>
string(8) "APPROVED"
["currency"]=>
string(3) "RUR"
["income"]=>
float(270)
["customer"]=>
array(3) {
["id"]=>
int(1118038)
["fio"]=>
string(27) "Валера"
["email"]=>
string(28) "valera111953@mail.ru"
}
["ware"]=>
array(4) {
["id"]=>
int(178109)
["title"]=>
string(93) "Прокат за месяц!"
["type"]=>
string(7) "DIGITAL"
["userId"]=>
int(571106)
}
["paymentSystem"]=>
string(4) "visa"
["paymentSystemGroup"]=>
string(10) "creditCard"
["total"]=>
float(550)
["ipAddress"]=>
string(13) "37.71.177.737"
["isOneTimeOffer"]=>
bool(false)
["orderType"]=>
string(9) "WARE_SALE"
}
}
}
echo $items->ware['title'];
echo $items->title;
echo $items['title'];
отдают ошибку Fatal error: Uncaught Exception: There is no column "ware" in
и atal error: Uncaught Error: Cannot use object of type MyItem as array in
Помогите правильно запросить данные.
Спасибо!
Как видно по var_dump
, вы рассматриваете объект класса MyItem
. Соответственно то что выводит var_dump
может быть, а может и не быть способом достичь желаемые данные. Свойство data
однозначно отмечено как protected
и потому снаружи будет недоступно.
У класса MyItem
есть два геттера: метод only
и магический метод __get
. Приключений добавляет то что на верхнем уровне вашего data
- числовой массив. Поэтому обращаться к нему требуется именно как к числу. Синтаксически корректно это пишется так:
$obj = new MyItem([0=> ['title' => 'bar']]);
var_dump($obj->{0}['title']);
Либо через only
достать весь элемент
var_dump($obj->only([0]));
// 1. Создаем экземпляр класса MyItem, на вход передаем данные (тестовые)
$items = new MyItem([
"firstField" => 1,
"secondField" => 2,
]);
// 2. Выводим в консоль поле firstField
print_r($items->only(["firstField"]));
Вывод в консоль:
Array
(
[firstField] => 1
)
Получить значение можно также:
print_r($items->__get("firstField"));
Вывод в консоль:
1
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Данная функция должна возвратить массив с папками БЕЗ использования глобальных переменныхПодскажите, пожалуйста, как это сделать?