From d351a5623dcea30a77c1bdf0c0a63d62f475060f Mon Sep 17 00:00:00 2001 From: "B.J. Scharp" Date: Thu, 28 May 2026 11:06:51 +0200 Subject: [PATCH] feat: return static on Subscription::create() --- src/Subscription.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Subscription.php b/src/Subscription.php index 740145d..f4f1a27 100644 --- a/src/Subscription.php +++ b/src/Subscription.php @@ -10,6 +10,10 @@ namespace Minishlink\WebPush; +/** + * @phpstan-consistent-constructor + * @psalm-consistent-constructor + */ class Subscription implements SubscriptionInterface { public const defaultContentEncoding = ContentEncoding::aesgcm; // Default for legacy input. The next major will use "aes128gcm" as defined to rfc8291. @@ -47,10 +51,10 @@ public function __construct( * @param array $associativeArray (with keys endpoint, publicKey, authToken, contentEncoding) * @throws \ErrorException */ - public static function create(array $associativeArray): self + public static function create(array $associativeArray): static { if (array_key_exists('keys', $associativeArray) && is_array($associativeArray['keys'])) { - return new self( + return new static( $associativeArray['endpoint'], $associativeArray['keys']['p256dh'] ?? null, $associativeArray['keys']['auth'] ?? null, @@ -59,7 +63,7 @@ public static function create(array $associativeArray): self } if (array_key_exists('publicKey', $associativeArray) || array_key_exists('authToken', $associativeArray) || array_key_exists('contentEncoding', $associativeArray)) { - return new self( + return new static( $associativeArray['endpoint'], $associativeArray['publicKey'] ?? null, $associativeArray['authToken'] ?? null, @@ -67,7 +71,7 @@ public static function create(array $associativeArray): self ); } - return new self( + return new static( $associativeArray['endpoint'] ); }