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

Итак, я эта ошибка появилась, когда я пытаюсь получить список массива из объекта 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.