PayPal sizeof():参数必须是数组或者实现了Countable的对象

Posted

技术标签:

【中文标题】PayPal sizeof():参数必须是数组或者实现了Countable的对象【英文标题】:PayPal sizeof(): Parameter must be an array or an object that implements Countable 【发布时间】:2019-06-02 21:35:26 【问题描述】:

我正在尝试在我的本地主机上安装 PayPal,但是当我测试 payment.php 时,在此文件中收到以下警告:

警告:sizeof():参数必须是数组或对象 实现可数 /Applications/MAMP/htdocs/functions/PayPal/供应商/paypal/ rest-api-sdk-php/lib/PayPal/Common/PayPalModel.php 在第 176 行

payment.php 代码在这里:

<?php   
$client_ID =  '********';
$client_Secret = '********';
require __DIR__ . '/PayPal/vendor/autoload.php'; 

$apiContext = new \PayPal\Rest\ApiContext(
        new \PayPal\Auth\OAuthTokenCredential(
            $client_ID,     // ClientID
            $client_Secret      // ClientSecret
        )
);

$apiContext->setConfig([
 'mode'=>'sandbox',
 'http.ConnectionTimeOut'=>30,
 'log.LogEnabled'=>false,
 'log.FileName'=>'',
 'log.LogLevel'=>'FINE',
 'validation.level'=>'log'
]);
//$total = $amount;
// After Step 2
$payer = new \PayPal\Api\Payer();
$payer->setPaymentMethod('paypal');

$amount = new \PayPal\Api\Amount();
$amount->setTotal('1.00');
$amount->setCurrency('USD');

$transaction = new \PayPal\Api\Transaction();
$transaction->setAmount($amount);

$redirectUrls = new \PayPal\Api\RedirectUrls();
$redirectUrls->setReturnUrl("https://example.com/your_redirect_url.html")
    ->setCancelUrl("https://example.com/your_cancel_url.html");

$payment = new \PayPal\Api\Payment();
$payment->setIntent('sale')
    ->setPayer($payer)
    ->setTransactions(array($transaction))
    ->setRedirectUrls($redirectUrls);
try 
           $payment->create($apiContext);
           echo $payment;

           echo "\n\nRedirect user to approval_url: " . $payment->getApprovalLink() . "\n";


 catch (\PayPal\Exception\PayPalConnectionException $ex) 
    // This will print the detailed information on the exception.
    //REALLY HELPFUL FOR DEBUGGING
    echo $ex->getData();


?>

我必须尝试将此页面用于https://github.com/paypal/PayPal-PHP-SDK/wiki/Making-First-Call

但我收到 sizeof() 警告。

我该如何解决这个问题,任何人都可以帮助我吗?

【问题讨论】:

github.com/paypal/PayPal-PHP-SDK/issues/1014 你用的是什么版本?他们发布了一个修复程序以支持 PHP 7.2+ 兼容性。如果您使用的是 PHP 7.2,请确保您的作曲家中有 最新 版本的库。 Here is the fix 如果您想自己手动操作,也可以选择。 @MacBooc 非常感谢您的帮助,亲爱的。它救了我。 【参考方案1】:

我遇到了这个问题,我通过以下更改得到了解决方案。

文件:vendor\paypal\rest-api-sdk-php\lib\PayPal\Common\PayPalModel.php

改变

 else if (sizeof($v) <= 0 && is_array($v) ) 

 else if (is_array($v) && sizeof($v) <= 0) 

【讨论】:

else if 作为两个词违反了 PHP 的 PSR-12 指南;应该写成一个字elseif 这是正确的答案,作为更新库或降级 PHP 的替代方法。

以上是关于PayPal sizeof():参数必须是数组或者实现了Countable的对象的主要内容,如果未能解决你的问题,请参考以下文章

警告:sizeof():参数必须是数组或实现可数php7.2的对象

sizeof与strlen的区别

C语言中“SIZEOF(INT)“是啥意思?有啥作用?

PHP中count()和sizeof()

strlen和sizeof的区别

sizeof 数组名字,数组指针