简体   繁体   中英

sizeof(): Parameter must be an array or an object that implements Countable

help me please

geting error sizeof(): Parameter must be an array or an object that implements Countable

ErrorException {#654 ▼
  #message: "sizeof(): Parameter must be an array or an object that implements Countable"
  #code: 0
  #file: "C:\Primer_Proyecto\Ventas\vendor\paypal\rest-api-sdk-php\lib\PayPal\Common\PayPalModel.php"
  #line: 179
  #severity: E_WARNING
  trace: {▼
    C:\Primer_Proyecto\Ventas\vendor\paypal\rest-api-sdk-php\lib\PayPal\Common\PayPalModel.php:179 {▶}
    Illuminate\Foundation\Bootstrap\HandleExceptions->handleError() {}
    C:\Primer_Proyecto\Ventas\vendor\paypal\rest-api-sdk-php\lib\PayPal\Common\PayPalModel.php:179 {▶}
    C:\Primer_Proyecto\Ventas\vendor\paypal\rest-api-sdk-php\lib\PayPal\Common\PayPalModel.php:281 {▶}
    C:\Primer_Proyecto\Ventas\vendor\paypal\rest-api-sdk-php\lib\PayPal\Common\PayPalModel.php:296 {▶}
    C:\Primer_Proyecto\Ventas\vendor\paypal\rest-api-sdk-php\lib\PayPal\Api\Payment.php:557 {▶}
    C:\Primer_Proyecto\Ventas\app\paypal.php:26 {▼
      › try{\r
      › \t$payment->create($this->_apiContext);\r
      › }\r
      arguments: {▶}
    }

This is the paypal.php code


public function generate(){
    $payment = \PaypalPayment::payment()->setIntent("sale")
        ->setPayer($this->payer())
        ->setTransactions([$this->transaction()])
        ->setRedirectURLs($this->redirectURLs());

    try {
        $payment->create($this->_apiContext);
    }
    catch(\Exception $ex){
        dd($ex);
        exit(1);
    }

    return $payment;
}


public function __construct($shopping_cart){
    $this->_apiContext = \PaypalPayment::ApiContext($this->_ClientId, $this  ->_ClientSecrete);
    $config = config("paypal_payment");
    $flatConfig = array_dot($config);
    $this->_apiContext->setConfig($flatConfig);
    $this->shopping_cart = $shopping_cart;
}

I do not see the error, I have stayed too long looking for what is my mistake

The error is in the paypal\\rest-api-sdk-php package you are using. The version of the package you are using is, apparently, not exactly compatible with PHP 7.2.

The specific error you are getting has been fixed in the latest version of the package ( 1.13.0 ). Update the package to the latest version, and this issue will be fixed. I cannot say what other issues may pop up, though.

In the 1.12.0 version, the specific line that is failing is:

} elseif (sizeof($v) <= 0 && is_array($v)) {

In PHP 7.2, if $v is not Countable, the sizeof() call will emit a warning, and Laravel will turn that warning into an exception.

In the 1.13.0 version, they updated the condition to be

} elseif (is_array($v) && sizeof($v) <= 0) {

Now, sizeof() will only be called when $v is an array, and therefore is guaranteed to be Countable, thus eliminating the warning.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM