Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

like image 321
Ulai Nava Avatar asked Mar 27 '18 06:03

Ulai Nava


1 Answers

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.

like image 191
patricus Avatar answered Nov 05 '22 08:11

patricus