php - 如何将变量值从一个函数发送到不同页面中的其他函数

标签 php oop frameworks

我是 php oop 新手,我想将变量值从一个函数发送到不同页面中的另一个函数。因此,目前我在一个页面中有一个函数,我想将数据发送到不同页面中的另一个函数。这可能吗?

这是 sendData.php 中的第一个函数

public function main($data) {

    $settings = new Settings();

    $hash_code = md5('standard' . '10068' . '08f94110d5697a2497511594c31704d0' .'3.00');
    $std_post = array(
                        'apitype'=>'standard',              //fix value
                        'apiid'=>'10068',               //your api id from ibill
                        'apiorderid'=>'OPC0001#00000282',               //your order id
                        'apihashcode'=>$hash_code,          //generate hash code as above
                        'apiamount'=>'3.00',                //your customer transaction amount
                        'apiemail'=>'<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d4b5b8bdb2e0b5a6a7b1bab5b8ede394b3b9b5bdb8fab7bbb9" rel="noreferrer noopener nofollow">[email protected]</a>');        //your customer email

   $callbackJSON = json_encode($std_post);

    $url = 'https://ibill.my/merchant/?ng=callback_api';        //link need to send data
    $ch = curl_init($url);                                      // where to post                                                                   
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
    curl_setopt($ch, CURLOPT_POSTFIELDS, $callbackJSON);                                                                  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
    $headers   = array();
    $headers[] = "Cache-Control: no-cache";
    $headers[] = "Content-Type: application/json";
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);  
    $results = curl_exec($ch);
    if (curl_errno($ch)) {
      echo 'Error:' . curl_error($ch);
    }
    curl_close($ch);
    //echo $results;

    $objJSON = json_decode($results);                       //decode json result

    //should return 'SUCCESS'
    $callback_status = $objJSON->{'callback_status'};       //callback Status
    $message = $objJSON->{'message'};                       //callback Message 

    //Refer on statuspage.php
    $std_status_code = $objJSON->{'std_status_code'};       //payment status code
    $std_status = $objJSON->{'std_status'};                 //payment status
    $std_order_id = $objJSON->{'std_order_id'};             //your order id
    $std_purchase_code = $objJSON->{'std_purchase_code'};   //ibill transaction id
    $std_amount = $objJSON->{'std_amount'};                 //transaction amount
    $std_datepaid = $objJSON->{'std_datepaid'};             //transaction date time

    //Hash code for security
    $std_hash_code = $objJSON->{'std_hash_code'};           //Hash code
    $hash_code = md5('08f94110d5697a2497511594c31704d0'.'10068'.$std_order_id.$std_amount); //hash code format

    $data = [
        'callback_status' => $callback_status,
        'message' => $message,
        'std_status_code' => $std_status_code,
        'std_status' => $std_status,
        'std_order_id' => $std_order_id,
        'std_purchase_code' => $std_purchase_code,
        'std_amount' => $std_amount,
        'std_datepaid' => $std_datepaid,
        'std_hash_code' => $std_hash_code,
        'hash_code' => $hash_code 
    ];

    processPayment($data);

}

这是另一个函数中的第二个函数,我希望将第一页中的数据发送到 test.php

public function processPayment($data)
{
    if (!isset($data['std_status_code'])) return false;
    if (!isset($data['std_hash_code'])) return false;

    $settings = new Settings();

    $sale_id = (int) substr($data['std_order_id'], 8);

    $sale = Sales::get($sale_id);

    if (empty($sale)) return false;

    if ($sale['status'] == 1) return $sale;

    if ($sale['payment_method'] !== 'ibill' || $sale['status'] != 0) return false;

    $sale_uid = $sale['uid'];
    $sale_method = $sale['method'];

    $paid_amount = bcadd($sale['total_amount'], $sale['handling_charge'], 2);

    // Verify the data integrity sent by iBill
    $hash = md5($settings->ibill_secret_key . $settings->ibill_merchant_id . $data['std_order_id'] . $data['std_amount']);

    $payment_processor_status = -1;
    $sale_status = 0;

    // Check provided hash and status
    if ($hash === $data['std_hash_code'] && $data['std_status_code'] == 00) {
        $payment_processor_status = 1;
        $sale_status = 1;
    }

    if ($sale_status === 0) {
        if ($data['std_status_code'] != 00) {
            $data['std_status'] = '<span style="color: red">' . $data['std_status'] . '</span>';
        }

        if ($data['std_hash_code'] !== $hash) {
            $data['std_hash_code'] = '<span style="color: red">' . $data['std_hash_code'] . '</span>';
        }
    }

    // Prepare updated sale data
    $now = new DateTime();

    $sale = [
        'payment_processor_status' => $payment_processor_status,
        'payment_processor_data' => $data,
        'payment_time' => $now->format('g:i:s A'),
        'payment_date' => $now->format('d-m-Y')
    ];

    Sales::update($sale_id, $sale);

    if ($sale_status === 1) {
        Sales::confirmSale($sale_id, false);
    }

    return ['uid' => $sale_uid, 'method' => $sale_method];
}

最佳答案

这些函数是类方法,而不仅仅是函数。 您可以通过创建其类的实例来使用它们(或将数据从一个类传递到另一个类)。例如这样的事情:

class one {
    public function f1($data) {
        // do something
        $instance = new two();
        $instance->f2($data);
    }
}

class two {
    public function f2($data) {
        // do something else
    }
}

希望它对你有用。

关于php - 如何将变量值从一个函数发送到不同页面中的其他函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55739201/

相关文章:

Java调用同一父类的子构造函数

c++ - 如何从另一个 .cpp 文件访问全局结构?

c++ - 如何访问许多类,所有类都派生自基类

frameworks - Io 框架开始学习 Io(编程语言)

php - 一列中的多个变量?

php - 对数组进行按位运算的 eval() 的替代方法

php - 如何发布新版本的API?

php - SMTP 错误 : The following recipients failed:XXXX

java - 将 Cucumber 集成到测试框架中?

php - Eloquent 地如何添加数组的所有值