JMS 序列化程序错误:不在对象中使用$this


JMS Serializer Error: Using $this when not in object

我正在处理付款处理页面。我们正在使用 Authorize.net 来处理交易。我已经导入了授权的 php 库及其所有依赖项。

当我尝试处理测试事务时,出现以下错误:

Fatal error: Using $this when not in object context in /home/ticketstroyfair/public_html/include/authorize/vendor/jms/serializer/src/JMS/Serializer/Serializer.php on line 99

起初我认为这是我的代码中的东西,所以我尝试运行 Authorize 的 php 示例事务并得到同样的错误。

序列化程序昨天刚刚从GitHub下载。 https://github.com/schmittjoh/serializer

以下是授权示例代码:

<?php
require 'include/authorize/autoload.php';
use net'authorize'api'contract'v1 as AnetAPI;
use net'authorize'api'controller as AnetController;
define("AUTHORIZENET_LOG_FILE","phplog");
// Common setup for API credentials  
  $merchantAuthentication = new AnetAPI'MerchantAuthenticationType();   
  $merchantAuthentication->setName("YOU_API_LOGIN_ID");   
  $merchantAuthentication->setTransactionKey("YOUR_TRANSACTION_KEY");   
  $refId = 'ref' . time();
// Create the payment data for a credit card
  $creditCard = new AnetAPI'CreditCardType();
  $creditCard->setCardNumber("4111111111111111" );  
  $creditCard->setExpirationDate( "2038-12");
  $paymentOne = new AnetAPI'PaymentType();
  $paymentOne->setCreditCard($creditCard);
// Create a transaction
  $transactionRequestType = new AnetAPI'TransactionRequestType();
  $transactionRequestType->setTransactionType("authCaptureTransaction");   
  $transactionRequestType->setAmount(151.51);
  $transactionRequestType->setPayment($paymentOne);
  $request = new AnetAPI'CreateTransactionRequest();
  $request->setMerchantAuthentication($merchantAuthentication);
  $request->setRefId( $refId);
  $request->setTransactionRequest($transactionRequestType);
  $controller = new AnetController'CreateTransactionController($request);
  $response = $controller->executeWithApiResponse('net'authorize'api'constants'ANetEnvironment::SANDBOX);   
if ($response != null) 
{
  $tresponse = $response->getTransactionResponse();
  if (($tresponse != null) && ($tresponse->getResponseCode()=="1"))
  {
    echo "Charge Credit Card AUTH CODE : " . $tresponse->getAuthCode() . "'n";
    echo "Charge Credit Card TRANS ID  : " . $tresponse->getTransId() . "'n";
  }
  else
  {
    echo "Charge Credit Card ERROR :  Invalid response'n";
  }
}  
else
{
  echo  "Charge Credit Card Null response returned";
}
?>

关于导致错误的原因的任何想法?

我敢打赌,你使用的PHP版本比5.4.0旧,对吧?

在该版本下不支持在匿名函数中调用$this。请参阅在匿名函数中使用$this

这里 http://php.net/manual/en/functions.anonymous.php

如果我是对的,我强烈建议至少更新到PHP 5.6.x

希望我能帮上忙。