From e68c25f0047293361d0d184b10422204bb51c940 Mon Sep 17 00:00:00 2001 From: Michael Schiemer Date: Tue, 4 Nov 2025 02:00:47 +0100 Subject: [PATCH] refactor(redis): refine connection handling and pool singleton initialization - Mark `RedisConnection::$connected` as read-only with `private(set)`. - Simplify authentication and database selection logic in `RedisConnection`. - Comment out DI container singleton registration in `RedisPoolInitializer`. - Annotate `RedisConnectionPool` with `#[Singleton]` attribute for improved clarity. --- src/Framework/Redis/RedisConnection.php | 11 +++++------ src/Framework/Redis/RedisConnectionPool.php | 2 ++ src/Framework/Redis/RedisPoolInitializer.php | 3 +-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Framework/Redis/RedisConnection.php b/src/Framework/Redis/RedisConnection.php index 6f6e63a0..929dc2a9 100644 --- a/src/Framework/Redis/RedisConnection.php +++ b/src/Framework/Redis/RedisConnection.php @@ -14,7 +14,7 @@ final class RedisConnection implements RedisConnectionInterface { private Redis $client; - private bool $connected = false; + private(set) bool $connected = false; public function __construct( private readonly RedisConfig $config, @@ -89,15 +89,14 @@ final class RedisConnection implements RedisConnectionInterface } // Authenticate if a password is provided - if ($this->config->password) { - if (! $this->client->auth($this->config->password)) { - throw new RedisConnectionException("Redis authentication failed"); - } + + if ($this->client->auth($this->config->password) === false) { + throw new RedisConnectionException("Redis authentication failed"); } // Select database if ($this->config->database > 0) { - if (! $this->client->select($this->config->database)) { + if ($this->client->select($this->config->database) === false) { throw new RedisConnectionException("Failed to select Redis database {$this->config->database}"); } } diff --git a/src/Framework/Redis/RedisConnectionPool.php b/src/Framework/Redis/RedisConnectionPool.php index 77f81139..8958eca0 100644 --- a/src/Framework/Redis/RedisConnectionPool.php +++ b/src/Framework/Redis/RedisConnectionPool.php @@ -4,12 +4,14 @@ declare(strict_types=1); namespace App\Framework\Redis; +use App\Framework\Attributes\Singleton; use InvalidArgumentException; /** * Redis connection pool that manages multiple named connections * for different purposes (cache, queue, sessions, etc.) */ +#[Singleton] final class RedisConnectionPool { /** @var array */ diff --git a/src/Framework/Redis/RedisPoolInitializer.php b/src/Framework/Redis/RedisPoolInitializer.php index 8bdf950f..01430924 100644 --- a/src/Framework/Redis/RedisPoolInitializer.php +++ b/src/Framework/Redis/RedisPoolInitializer.php @@ -14,7 +14,6 @@ use App\Framework\DI\Initializer; final readonly class RedisPoolInitializer { public function __construct( - private Container $container, private Environment $environment, ) { } @@ -46,7 +45,7 @@ final readonly class RedisPoolInitializer // Remove dynamic configuration loading since we're removing Configuration.php // Register pool as singleton in DI container - $this->container->singleton(RedisConnectionPool::class, $pool); + #$this->container->singleton(RedisConnectionPool::class, $pool); return $pool; }