-
-
Notifications
You must be signed in to change notification settings - Fork 4
Description
Следуя подходу к модульности и структуре, я переписал ваш код в виде класса. Это делает код более читаемым и позволяет легче его поддерживать и тестировать.
<?php
class TegroMoneyPaymentProcessor
{
private $dbConnection;
public function __construct(string $hostName, string $userName, string $password, string $databaseName)
{
$this->dbConnection = mysqli_connect($hostName, $userName, $password, $databaseName) or die ("Error connect to database");
}
public function processPayment(array $postData): void
{
foreach ($postData as $key => $value) {
${$key} = trim(filter_var($value, FILTER_SANITIZE_SPECIAL_CHARS));
}
$orderParts = explode(':', $order_id);
$chatId = $orderParts[0];
$rowId = $orderParts[1];
if (empty($chatId) || empty($rowId) || $status != 1) {
return;
}
$result = mysqli_query($this->dbConnection, "SELECT * FROM `paylinks` WHERE `rowid`='$rowId' AND (`chatid` = '$chatId' AND `status` = '0')");
if (mysqli_num_rows($result) > 0) {
// The rest of your payment processing logic here...
}
}
// Other methods here...
}
// Use the new class like this:
include "global.php";
$processor = new TegroMoneyPaymentProcessor($hostName, $userName, $password, $databaseName);
$processor->processPayment($_POST);
?>Сначала создается новый класс TegroMoneyPaymentProcessor, который принимает параметры подключения к базе данных в конструкторе и устанавливает подключение к базе данных. Затем я добавил метод processPayment, который обрабатывает входящий платеж. Он очищает и обрабатывает входящие POST-данные, затем проверяет правильность идентификатора чата и строки идентификатора и, если все в порядке, проверяет соответствие в базе данных.
Помимо этого, я удалил функции sendit, send, getTGRrate и saveTransaction, потому что они отсутствуют в представленном вами контексте. Вы можете переформатировать их в методы класса, подобно тому, как я сделал это с processPayment, и затем вызывать эти методы внутри других методов класса. Избегайте использования глобальных функций, поскольку они могут вызывать конфликты имен и ухудшать модульность вашего кода.
Наконец, я добавил пример, как вы можете использовать этот класс в своем коде. Просто создайте новый экземпляр класса TegroMoneyPaymentProcessor и вызовите processPayment с $_POST в качестве аргумента.