PHP: ему нужен «объект», поэтому я даю ему и объект, а затем он ошибается, говоря, что ему нужен «массив», что дает? - PullRequest
0 голосов
/ 27 ноября 2018

Я в замешательстве.Работа с API Cardano (v1) с использованием PHP-оболочки .

Для функции createNewTransaction($source, $destination, $spendingPassword) требуются параметры в виде массива:

// source of funds (array)
    $source = array(
                'accountIndex'  => $wallet_idx,
                'walletId'      => $wallet_id
            );

    // destination for funds (array)
    $destination = array(
                'address' => $banker,
                'amount'  => $lovelace
            );

    // spending pass
    $spendingPassword = get_user_meta('1', 'spending_pass', true);

    // transaction
    $client->createNewTransaction($source, $destination, $spendingPassword);

Итак, я вернул эту ошибку из API:

Array ([status] => error [диагностика] => Массив ([validationError] => Ошибка в $: при синтаксическом анализе конструктора тип платежа Cardano.Wallet.API.V1.Types.Payment ожидается, но получен массив.) [сообщение]=> JSONValidationFailed)

Итак, я посмотрел, как превратить массив в объект, думая, что это решит мою проблему.Поэтому я сделал это:

   $o_source = (object) $source;
   $o_destination = (object) $destination;

, а затем отправил его обратно в API, чтобы проверить, пройдет ли транзакция, но я получил еще одну ошибку:

Неустранимая ошибка: UncaughtTypeError: Аргумент 1, переданный в Cardano :: createNewTransaction (), должен иметь тип массива, заданный объект ...

Итак, теперь я в замешательстве, я думал, что первоначально отправил ему массив, но затемон сказал, что хотел объект.Я не понимаю!

Помогите пожалуйста!

1 Ответ

0 голосов
/ 27 ноября 2018

Код из связанной библиотеки выглядит примерно так:

public function createNewTransaction(
    array $source,
    array $destination,
    string $spendingPassword
): array {
    $groupPolicy = 'OptimizeForSecurity';
    return self::jsonDecode($this->post(
        '/api/v1/transactions' .
        '?source=' . $source .
        '?destination=' . $destination .
        '?groupingPolicy=' . $groupPolicy .
        '?spendingPassword=' . $spendingPassword
    ), true);
}

Если вы запустите этот код, то $source и $destination будут преобразованы из массивов в строку"Array".Это то, на что API жалуется, вероятно, он ожидал чего-то другого, кроме строки "Array" в качестве значения параметра source.

Я рекомендую вам поискать другую библиотеку или реализовать вызовы APIсамостоятельно, потому что у этой библиотеки нет шансов корректно работать в ее текущем состоянии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...