paynow-php-sdk icon indicating copy to clipboard operation
paynow-php-sdk copied to clipboard

Metoda Paynow\Response\PaymentMethods\PaymentMethods::getAll() może zwrócić null

Open piotr-dziubczynski-spyro opened this issue 1 year ago • 1 comments

Deklaracja parametru metody wygląda w ten sposób:

    /**
     * @var PaymentMethod[]
     */
    private $list;

A getter dla tego parametru wygląda tak:

    /**
     * Retrieve all available payment methods
     *
     * @return PaymentMethod[]
     */
    public function getAll()
    {
        return $this->list;
    }

Jest to jednak zbyt optymistyczne podejście...

Konstruktor klasy wygląda tak:

    public function __construct($body)
    {
        if (! empty($body)) {
            foreach ($body as $group) {
                if (! empty($group->paymentMethods)) {
                    foreach ($group->paymentMethods as $item) {
                        $this->list[] = new PaymentMethod(
                            $item->id,
                            $group->type,
                            $item->name,
                            $item->description,
                            $item->image,
                            $item->status,
                            $item->authorizationType ?? null
                        );
                    }
                }
            }
        }
    }

Istnieje więc szansa, że zmienna $body lub $group->paymentMethods będzie pusta, więc w rezultacie nie dojdziemy nawet do wypełnienia $this->list.

Rozwiązanie: Zmienić deklarację parametru na taką:

private array $list = [];

Swoją drogą, kiedy przejście kodem na PHP 8.2?