Skip to content

Небольшой анализ вашего кода на ошибки по файлу: TonClient.php #4

@MoneyTegro

Description

@MoneyTegro

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

  1. Отсутствие импорта класса Exception: Для использования класса Exception в вашем коде, вы должны включить эту строчку в верхней части вашего файла:
use Exception;
  1. Нет контроля типов для аргументов функций. Возможно, стоит использовать Type Hinting, чтобы убедиться, что функции получают ожидаемые типы данных.

Например, функция getBalance($address) может быть определена таким образом:

public function getBalance(string $address)
  1. Метод send($method, $data = []) формирует query string с помощью оператора +, который в PHP используется для арифметического сложения, а не для объединения массивов. Для объединения массивов в PHP используйте оператор array_merge(). В итоге ваш код должен выглядеть так:
http_build_query(array_merge($data,
	[
		'provider' => $this->provider,
		'providerKey' => $this->providerKey,
		'type' => $this->type,
		'jettons' => $this->jettons,
	]))
  1. Ваше использование CURL не включает проверку ошибок. Всегда хорошей практикой является добавление обработки ошибок при работе с внешними ресурсами, такими как API. Здесь как это можно сделать:
private function request($url)
{
	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	$response = curl_exec($ch);

	if (curl_errno($ch)) 
	{
		throw new Exception('Curl error: ' . curl_error($ch));
	}

	curl_close($ch);

	return $response;
}
  1. В вашем методе sendTransactionJetton($mnemonics, $toAddress, $amount, $jetton) вы включаете $jetton в запрос, но не используете его в дальнейшем. Если вы хотите использовать свойство jettons с учетом переданного значения $jetton, нужно обращаться к элементу массива по этому ключу.

Пожалуйста, учтите, что мои предложения основаны на общих практиках программирования и могут не совпадать с вашими конкретными требованиями к проекту.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions