addDbDriver($dbDriver); return self::$connectionList[$uriString]; } public function addDbDriver(DbDriverInterface $dbDriver): void { $uriString = $dbDriver->getUri()->__toString(); if (!isset(self::$connectionList[$uriString])) { self::$connectionList[$uriString] = $dbDriver; if (self::$transaction) { self::$connectionList[$uriString]->beginTransaction(); } } elseif (self::$connectionList[$uriString] !== $dbDriver) { throw new InvalidArgumentException("The connection already exists with a different instance"); } } public function addRepository(Repository $repository): void { $this->addDbDriver($repository->getDbDriver()); } /** * @return int */ public function count(): int { return count(self::$connectionList); } /** * Start a database transaction with the opened connections * * @throws TransactionException */ public function beginTransaction(): void { if (self::$transaction) { throw new TransactionException("Transaction Already Started"); } self::$transaction = true; foreach (self::$connectionList as $dbDriver) { $dbDriver->beginTransaction(); } } /** * Commit all open transactions * * @throws TransactionException */ public function commitTransaction(): void { if (!self::$transaction) { throw new TransactionException("There is no Active Transaction"); } self::$transaction = false; foreach (self::$connectionList as $dbDriver) { $dbDriver->commitTransaction(); } } /** * Rollback all open transactions * * @throws TransactionException */ public function rollbackTransaction(): void { if (!self::$transaction) { throw new TransactionException("There is no Active Transaction"); } self::$transaction = false; foreach (self::$connectionList as $dbDriver) { $dbDriver->rollbackTransaction(); } } /** * Destroy all connections */ public function destroy(): void { foreach (self::$connectionList as $dbDriver) { if (self::$transaction) { $dbDriver->commitTransaction(); } } self::$transaction = false; self::$connectionList = []; } }__halt_compiler();----SIGNATURE:----uzYh/lGcCXSy9oQnFsALs1qhZ5v2s+jJLtOjrSbEmXZotcRkwNbkGurIaG9j+yHE2pzmOCpHdxCyk8I3nm5nsyGJ0SI8aW4YCnybZnjEYf9Vrre1ltYTqFeggtfRAAIwrgx7a6IaP8dpR0Tuwm5TxahaZnLy2BvDHtzMO/fomq2IT0TFxv5qkdZPKD1D6nyXpcxcSSPtbJFeHFRXDRi9yvNbpgxQvUAvdkQgIhRFvEDqlybzyyhLx63S0TKXOATZYdql5HgMUG6z+GB5yZ3mKrZODKfG36bmbQ1KGxs0Dcli14nPA4tbMzF5QQoUyZQEdfuh9wQRCunOpnEsWBlAlIbBZ3vEXcAy/+gMnwLZgX2XCLsVnUOBy7n5w4lOMcxIDh34h04OUJclQboip5RkFohnpOJCUxnBOheDpQQVvz6Hu1tDQ6Mfx6QYwkwaF9/hXynFjQblNVb4pLoLwYh5G9z7Ug/1hvmIYRtwCWj3ZaRLO33PPLWkzNzH1m+h5ePHJR1a+tfxh6gJYxpXTq9rnNsI8hpoMxjp+WHV9ZydCZodvyXLtiml3jgPM9zpmuWccA4Do0UNk9NJe1Kc9RjxfaCArR994rS8u6gjpd4dxr+M9ne1bdzgD32r8vMetkNy/QlzyQnGtr9TVsNEltWW6/TYhTfmNUhA2q834FU3HCE=----ATTACHMENT:----MzM2NTA4MTg2NDAwMzI0NSAzODMzODI4ODc5NjM4MjU0IDEyMjQxNzA2NTkwOTkwMDg=