Неустранимая ошибка: нельзя использовать объект типа как массив

Итак, я эта ошибка появилась, когда я пытаюсь получить список массива из объекта singleton.

Это singleton на CardType.php

class CardTypeAPIAccessor extends GuzzleClient
{ private $client; public function __construct($client) { if($client instanceof GuzzleClient) { $this->client = $client; } else { $this->client = parent::getClient(); } } public function getCardTypes() { $cardTypes = array(); try { $response = $this->client->get('admin/card/type', ['headers' => ['Authorization' => $_SESSION['login']['apiKey']] ]); $statusCode = $response->getStatusCode(); // Check that the request is successful. if ($statusCode == 200) { $error = $response->json(); foreach ($error['types'] as $type) { $cardType = new CardType(); $cardType->setCardTypeId($type['card_type_id']); $cardType->setCategory($type['category']); array_push($cardTypes, $cardType); } } } catch(RequestException $e) { //todo echo $e->getRequest() . ""; if ($e->hasResponse()) { echo $e->getResponse() . ""; } } return $cardTypes; }
}

И это код на card_type.php

<!--?php $cardTypes = $cardTypeAPIAccessor--->getCardTypes(); foreach ($cardTypes as $cardType){ $Type = new CardType();
?> <!-- The error is here--> <!--?php echo $Type--->getCardTypeId($cardType['card_type_id']); ?> <!--?php echo $Type--->getCategory($cardType['category']); ?>

Ошибка: Нельзя использовать объект типа CardType как массив

Является ли мой код неправильным?

благодаря

2 ответа

Похоже, что вы уже получили все необходимые значения в этой строке:

$cardTypes = $cardTypeAPIAccessor->getCardTypes();

Поэтому мне кажется, что в вашем цикле вам просто нужно:

foreach ($cardTypes as $cardType){
?> <!--?php echo $cardType--->getCardTypeId(); ?> <!--?php echo $cardType--->getCategory(); ?>

Хотя это действительно просто предположение, основанное на данном коде и недостающем классе CardType. Но я не вижу необходимости генерировать новые объекты внутри цикла.


$cardType является экземпляром класса CardType, а не массивом. Проблема в том, что вы используете его, как если бы это был массив, когда это объект. Итак, это

$cardType['card_type_id']

Должно быть

$cardType->getCardTypeID()

licensed under cc by-sa 3.0 with attribution.