PHP 解析错误:语法错误,PHP 8.1 错误消息中的意外标记“public”

问题描述 投票:0回答:2

在 PHP 8.1 中运行时会触发上述错误消息。

无法发现任何明显的问题,关于需要更改以下代码的位置以消除此错误消息。

 public function process_button()
{
    $sid = zen_session_name() . '=' . zen_session_id();
    $formEntries = $this->buildStandardTransactionDetails();
    $formEntries['SuccessURL'] = str_replace('&', '&', zen_href_link(FILENAME_CHECKOUT_PROCESS, $sid, 'SSL', false));
    $formEntries['FailureURL'] = str_replace('&', '&', zen_href_link(FILENAME_CHECKOUT_PROCESS, $sid, 'SSL', false));
    $processButtonString = SagepayUtil::processCryptEntries($formEntries);

    $crypt = SagepayUtil::encryptAndEncode($processButtonString, MODULE_PAYMENT_SAGEPAY_ZC_FORM_PASSWORD);

    $transaction_type = strtoupper(MODULE_PAYMENT_SAGEPAY_ZC_FORM_TXTYPE);
    $this->errorLog(array(
        array('title' => 'Transaction Type', 'content' => $transaction_type),
        array('title' => 'Submit Data', 'content' => $processButtonString)
    ));

    $process_button_string = zen_draw_hidden_field('VPSProtocol', self::SP_PROTOCOL_VERSION) .
        zen_draw_hidden_field('TxType', $transaction_type) .
        zen_draw_hidden_field('Vendor', MODULE_PAYMENT_SAGEPAY_ZC_FORM_VENDOR_NAME) .
        zen_draw_hidden_field('ReferrerID', 'BB5F9F0D-8982-4203-AFD4-AF78017E4B92') .
        zen_draw_hidden_field('Crypt', $crypt);
    return $process_button_string;
}

错误指向第一行代码(如下):

 public function process_button()

完整的 php 文件:

<?php
/**
* sagepay form
*
* @package paymentMethod
* @copyright Copyright 2003-2017 Zen Cart Development Team
* @copyright Portions Copyright 2003 osCommerce
* @copyright Portions Copyright Nixak
* @license http://www.zen-cart.com/license/2_0.txt GNU Public License 
V2.0
* @version $Id: Author: zcwilt  June 2017 New in v1.5.5 $
*/
require_once(DIR_FS_CATALOG . DIR_WS_MODULES . 
'payment/sagepay_zc/SagepayBasket.php');
require_once(DIR_FS_CATALOG . DIR_WS_MODULES . 
'payment/sagepay_zc/SagepayCustomer.php');
require_once(DIR_FS_CATALOG . DIR_WS_MODULES . 
'payment/sagepay_zc/SagepayUtil.php');
 require_once(DIR_FS_CATALOG . DIR_WS_MODULES . 
 'payment/sagepay_zc/sagepay_zc_payment.php');

/**
 * Class sagepay_form
*/
 class sagepay_zc_form extends sagepay_zc_payment
 {

/**
 * @var array
 */
protected $sagepayResponse;

/**
 *
 */
public function __construct()
{
    $this->code = 'sagepay_zc_form';
    parent::__construct();
    $this->form_action_url = 
    'https://live.sagepay.com/gateway/service/vspform-register.vsp';
    if (MODULE_PAYMENT_SAGEPAY_ZC_FORM_TEST_STATUS == 'test') {
    $this->form_action_url = 
   'https://test.sagepay.com/gateway/service/vspform-register.vsp';
    }
    if ((extension_loaded('suhosin') || defined("SUHOSIN_PATCH"))  && 
    ini_get('suhosin.get.max_value_length') < 600) {
        $this->title .= '<span class="">' . TEXT_TITLE_SUHOSIN_ERROR . 
    '</span>';
        $this->description = '<span class="">' . 
    TEXT_DESCRIPTION_SUHOSIN_GET_LENGTH_ERROR . '</span><br><br>' . 
    $this->description;
    if ((extension_loaded('suhosin') || defined("SUHOSIN_PATCH"))  && 
    ini_get('suhosin.get.max_value_length') < 600) {
        $this->title .= '<span class="">' . TEXT_TITLE_SUHOSIN_ERROR . 
    '</span>';
        $this->description = '<span class="">' . 
    TEXT_DESCRIPTION_SUHOSIN_GET_LENGTH_ERROR . '</span><br><br>' . 
    $this->description;
        $this->enabled = false;
    }
    }

    /**
    * @return string
    */
   public function process_button()
    {
    $sid = zen_session_name() . '=' . zen_session_id();
    $formEntries = $this->buildStandardTransactionDetails();
    $formEntries['SuccessURL'] = str_replace('&amp;', '&', 
    zen_href_link(FILENAME_CHECKOUT_PROCESS, $sid, 'SSL', false));
    $formEntries['FailureURL'] = str_replace('&amp;', '&', 
    zen_href_link(FILENAME_CHECKOUT_PROCESS, $sid, 'SSL', false));
    $processButtonString = 
    SagepayUtil::processCryptEntries($formEntries);

    $crypt = SagepayUtil::encryptAndEncode($processButtonString, 
    MODULE_PAYMENT_SAGEPAY_ZC_FORM_PASSWORD);

    $transaction_type = 
    strtoupper(MODULE_PAYMENT_SAGEPAY_ZC_FORM_TXTYPE);
    $this->errorLog(array(
        array('title' => 'Transaction Type', 'content' => 
    $transaction_type),
        array('title' => 'Submit Data', 'content' => 
    $processButtonString)
    ));

    $process_button_string = zen_draw_hidden_field('VPSProtocol', 
    self::SP_PROTOCOL_VERSION) .
        zen_draw_hidden_field('TxType', $transaction_type) .
        zen_draw_hidden_field('Vendor', 
    MODULE_PAYMENT_SAGEPAY_ZC_FORM_VENDOR_NAME) .
        zen_draw_hidden_field('ReferrerID', 'BB5F9F0D-8982-4203-AFD4- 
    AF78017E4B92') .
        zen_draw_hidden_field('Crypt', $crypt);
    return $process_button_string;
    }

   /**
   *
   */
   public function before_process()
    {
    global $messageStack;
    $sagepay_return_data = SagepayUtil::decodeAndDecrypt($_GET['crypt'], 
    MODULE_PAYMENT_SAGEPAY_ZC_FORM_PASSWORD);
    $this->errorLog(array(
        array('title' => 'Response Data', 'content' => 
    $sagepay_return_data)
    ));
    $this->sagepayResponse = 
    SagepayUtil::getResponseTokens($sagepay_return_data);

    $status = $this->sagepayResponse['Status'];
    if (in_array($status, array('OK', 'REGISTERED', 'AUTHENTICATED'))) {
        return;
    }
    $error_message = $this->getResponseErrorMessage($this- 
    >sagepayResponse['Status']);
    $payment_error_return = 'ERROR ' . sprintf($error_message, $this- 
    >sagepayResponse['StatusDetail']);
    $this->errorLog(array(
        array('title' => 'Response Values', 'content' => implode("\n", 
    $this->sagepayResponse))
    ));
    $messageStack->add_session('checkout_payment', 
    $payment_error_return, 'error');
    zen_redirect(zen_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL', 
    true, false));
    }

    /**
    * @param $zf_order_id
   */
    public function after_order_create($zf_order_id)
    {
    global $db;
    $transactionData = $this->sagepayResponse;
    $sagepayTransaction = array();
    $sagepayTransaction[] = array('fieldName' => 'vpstxid', 'value' => 
    $transactionData['VPSTxId'], 'type' => 'string');
    $sagepayTransaction[] = array('fieldName' => 'zen_order_id', 'value' 
    => $zf_order_id, 'type' => 'integer');
    $sagepayTransaction[] = array('fieldName' => 'api_type', 'value' => 
    $this->code, 'type' => 'string');
    $sagepayTransaction[] = array('fieldName' => 'vendor_tx_code', 
    'value' => $transactionData['VendorTxCode'], 'type' => 'string');
    $sagepayTransaction[] = array('fieldName' => 'transaction_status', 
    'value' => $transactionData['Status'], 'type' => 'string');
     $sagepayTransaction[] = array('fieldName' => 'status_detail', 
    'value' => issetorArray($transactionData, 'StatusDetail', ''), 
    'type' => 'string');
    $sagepayTransaction[] = array('fieldName' => 'tx_auth_no', 'value' 
    => issetorArray($transactionData, 'TxAuthNo', ''), 'type' => 
    'string');
    $sagepayTransaction[] = array('fieldName' => 'avs_cv2', 'value' => 
    issetorArray($transactionData, 'AVSCV2', ''), 'type' => 'string');
    $sagepayTransaction[] = array('fieldName' => 'address_result', 
    'value' => issetorArray($transactionData, 'AddressResult', ''), 
    'type' => 'string');
    $sagepayTransaction[] = array('fieldName' => 'postcode_result', 
   'value' => issetorArray($transactionData, 'PostCodeResult', ''), 
   'type' => 'string');
    $sagepayTransaction[] = array('fieldName' => 'cv2_result', 'value' 
    => issetorArray($transactionData, 'CV2Result', ''), 'type' => 
    'string');
    $sagepayTransaction[] = array('fieldName' => 
    'three_d_secure_status', 'value' => issetorArray($transactionData, 
    '3DSecureStatus', ''), 'type' => 'string');
    $sagepayTransaction[] = array('fieldName' => 'cavv_result', 'value' 
    => issetorArray($transactionData, 'CAVV', ''), 'type' => 'string');
    $sagepayTransaction[] = array('fieldName' => 'card_type', 'value' => 
    issetorArray($transactionData, 'CardType', ''), 'type' => 'string');
    $sagepayTransaction[] = array('fieldName' => 'last_4_digits', 
    'value' => issetorArray($transactionData, 'Last4Digits', ''), 'type' 
    => 'string');
    $sagepayTransaction[] = array('fieldName' => 'address_status', 
   'value' => issetorArray($transactionData, 'AddressStatus', ''), 
   'type' => 'string');
    $sagepayTransaction[] = array('fieldName' => 'payer_status', 'value' 
    => issetorArray($transactionData, 'PayerStatus', ''), 'type' => 
    'string');
    $db->perform(TABLE_SAGEPAY_TRANSACTION, $sagepayTransaction);
    }
    }
php function syntax token public
2个回答
0
投票

这个函数不是类的一部分。所以删除

public
关键字只是

function process_button()

0
投票

如果您尝试将

public
关键字添加到 PHP 中的函数并且它给您一个错误,这可能是因为您没有在类中使用它。

所以,在这里你也在做同样的事情,你将 public 关键字添加到一个不在任何类中的函数。

所以,解决这个问题的方法是简单地从函数前面删除

public
关键字,或者在某个类中定义函数,如下所示:

<?php

class Test{
    public function process_button()
    {
        $sid = zen_session_name() . '=' . zen_session_id();
        $formEntries = $this->buildStandardTransactionDetails();
        $formEntries['SuccessURL'] = str_replace('&amp;', '&', zen_href_link(FILENAME_CHECKOUT_PROCESS, $sid, 'SSL', false));
        $formEntries['FailureURL'] = str_replace('&amp;', '&', zen_href_link(FILENAME_CHECKOUT_PROCESS, $sid, 'SSL', false));
        $processButtonString = SagepayUtil::processCryptEntries($formEntries);

        $crypt = SagepayUtil::encryptAndEncode($processButtonString, MODULE_PAYMENT_SAGEPAY_ZC_FORM_PASSWORD);

        $transaction_type = strtoupper(MODULE_PAYMENT_SAGEPAY_ZC_FORM_TXTYPE);
        $this->errorLog(
            array(
                array('title' => 'Transaction Type', 'content' => $transaction_type),
                array('title' => 'Submit Data', 'content' => $processButtonString)
            )
        );

        $process_button_string = zen_draw_hidden_field('VPSProtocol', self::SP_PROTOCOL_VERSION) .
            zen_draw_hidden_field('TxType', $transaction_type) .
            zen_draw_hidden_field('Vendor', MODULE_PAYMENT_SAGEPAY_ZC_FORM_VENDOR_NAME) .
            zen_draw_hidden_field('ReferrerID', 'BB5F9F0D-8982-4203-AFD4-AF78017E4B92') .
            zen_draw_hidden_field('Crypt', $crypt);
        return $process_button_string;
    }
}
?>

如果不想在类中定义函数,请尝试以下代码:

<?php

     function process_button()
    {
        $sid = zen_session_name() . '=' . zen_session_id();
        $formEntries = $this->buildStandardTransactionDetails();
        $formEntries['SuccessURL'] = str_replace('&amp;', '&', zen_href_link(FILENAME_CHECKOUT_PROCESS, $sid, 'SSL', false));
        $formEntries['FailureURL'] = str_replace('&amp;', '&', zen_href_link(FILENAME_CHECKOUT_PROCESS, $sid, 'SSL', false));
        $processButtonString = SagepayUtil::processCryptEntries($formEntries);

        $crypt = SagepayUtil::encryptAndEncode($processButtonString, MODULE_PAYMENT_SAGEPAY_ZC_FORM_PASSWORD);

        $transaction_type = strtoupper(MODULE_PAYMENT_SAGEPAY_ZC_FORM_TXTYPE);
        $this->errorLog(
            array(
                array('title' => 'Transaction Type', 'content' => $transaction_type),
                array('title' => 'Submit Data', 'content' => $processButtonString)
            )
        );

        $process_button_string = zen_draw_hidden_field('VPSProtocol', self::SP_PROTOCOL_VERSION) .
            zen_draw_hidden_field('TxType', $transaction_type) .
            zen_draw_hidden_field('Vendor', MODULE_PAYMENT_SAGEPAY_ZC_FORM_VENDOR_NAME) .
            zen_draw_hidden_field('ReferrerID', 'BB5F9F0D-8982-4203-AFD4-AF78017E4B92') .
            zen_draw_hidden_field('Crypt', $crypt);
        return $process_button_string;
    }

?>

在这里,在上面的代码中,我只是删除了访问说明符

public

© www.soinside.com 2019 - 2024. All rights reserved.