diff --git a/src/ConnectionPool.php b/src/ConnectionPool.php index 5abb2d6..3c46b49 100644 --- a/src/ConnectionPool.php +++ b/src/ConnectionPool.php @@ -148,6 +148,10 @@ public function borrow() */ public function return($connection): bool { + if (!$this->connector->validate($connection)) { + throw new \RuntimeException('Connection of unexpected type returned.'); + } + if (!$this->initialized) { throw new \RuntimeException('Please initialize the connection pool first, call $pool->init().'); } diff --git a/src/Connectors/ConnectorInterface.php b/src/Connectors/ConnectorInterface.php index 538f571..e04e946 100644 --- a/src/Connectors/ConnectorInterface.php +++ b/src/Connectors/ConnectorInterface.php @@ -32,4 +32,12 @@ public function isConnected($connection): bool; * @return mixed */ public function reset($connection, array $config); + + /** + * Validate the connection + * + * @param mixed $connection + * @return bool + */ + public function validate($connection): bool; } \ No newline at end of file diff --git a/src/Connectors/CoroutineMySQLConnector.php b/src/Connectors/CoroutineMySQLConnector.php index dcc51fe..7b01c73 100644 --- a/src/Connectors/CoroutineMySQLConnector.php +++ b/src/Connectors/CoroutineMySQLConnector.php @@ -31,4 +31,9 @@ public function reset($connection, array $config) { } + + public function validate($connection): bool + { + return $connection instanceof MySQL; + } } \ No newline at end of file diff --git a/src/Connectors/CoroutinePostgreSQLConnector.php b/src/Connectors/CoroutinePostgreSQLConnector.php index 424efae..d3b6930 100644 --- a/src/Connectors/CoroutinePostgreSQLConnector.php +++ b/src/Connectors/CoroutinePostgreSQLConnector.php @@ -34,4 +34,9 @@ public function reset($connection, array $config) { /**@var PostgreSQL $connection */ } + + public function validate($connection): bool + { + return $connection instanceof PostgreSQL; + } } \ No newline at end of file diff --git a/src/Connectors/CoroutineRedisConnector.php b/src/Connectors/CoroutineRedisConnector.php index 635b9ad..968e0a8 100644 --- a/src/Connectors/CoroutineRedisConnector.php +++ b/src/Connectors/CoroutineRedisConnector.php @@ -45,4 +45,9 @@ public function reset($connection, array $config) } $connection->setDefer(false); } + + public function validate($connection): bool + { + return $connection instanceof Redis; + } } \ No newline at end of file diff --git a/src/Connectors/PhpRedisConnector.php b/src/Connectors/PhpRedisConnector.php index 6e38da3..bbcb11a 100644 --- a/src/Connectors/PhpRedisConnector.php +++ b/src/Connectors/PhpRedisConnector.php @@ -45,4 +45,9 @@ public function reset($connection, array $config) $connection->select($config['database']); } } + + public function validate($connection): bool + { + return $connection instanceof \Redis; + } } \ No newline at end of file