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

0

Итак, я эта ошибка появилась, когда я пытаюсь получить список массива из объекта 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() . "</br>";
            if ($e->hasResponse()) 
            {
                echo $e->getResponse() . "</br>";
            }
        }
        return $cardTypes;      
    }
}

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

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

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

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

благодаря

  • 0
    Какой номер строки? Можете ли вы смело это или что-то?
  • 0
    в этом коде <td class="numeric"><?php echo $Type->getCardTypeId($cardType['card_type_id']); ?></td> <td class="numeric"><?php echo $Type->getCategory($cardType['category']); ?></td>
Показать ещё 1 комментарий
Теги:
object
arrays

2 ответа

1
Лучший ответ

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

$cardTypes = $cardTypeAPIAccessor->getCardTypes();

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

foreach ($cardTypes as $cardType){
?>
 <tr>
    <td class="numeric"><?php echo $cardType->getCardTypeId(); ?></td>
    <td class="numeric"><?php echo $cardType->getCategory(); ?></td>
 </tr>

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

  • 0
    спасибо, решено :)
1

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

$cardType['card_type_id']

Должно быть

$cardType->getCardTypeID()
  • 0
    Такой хороший краткий ответ, молодец.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню