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:----gMd+ZM84VQc88NDD5CO6fJK9dmyiMfwWvXOlSu56n+EQhOUSRgkCCjy3MxIprmb9/s4j1Y4iI3P9Y4oiQYDxKZe14Dgi14JGjxGv52+sAZu9Jjo7slH2EyeVjKej/4Yg2/HbyQDJwaxcH4k/UixhD9p8EcukBFF4ZTQ/MYj6zRbAUrWgiWtpxnMfMyKResSrDqOWtwczkYqGj/bH8OqN18C/7KP7ckM4bwTbHU8c06FISJ3WY4baj5XBQhV76yNbY78AZD0iPS7VpUdCjWhQCPH7TgNTB4oOnsbeJsWxN9vrXQ9wVFG4ZXYi73f5Xa74Q2Q06IX/99JkpEnxep6MXmd3DfDuSqEQLARPvdZI5ovU2kabSWxFSxahiyHACWwK8NTFK4eEBEHV88sJlJi4IlTKRLdLCYNI+o7WicVg+e3o62l2NWAmOzrgDSzZ2R74BQmGiRaaWeTVzGXVLedYXU3K0iUpbF1A7StvDt8jGogQqHny3AeqrkbNB5zv1KYxNRZ4GgR69mZdR9b/00VLYuepyr/mTuVotIDS5BT9K0XFlTVdYdWzDUY+TEG6FsvL0dOvvBjkRs/HSAmFSR6iZ5ZGhWTgoc5gTFKm/q7Fiy68mzWRsgglRbDxE7ubHc57OKBNE1HCOP/WDO9IWwPMHeH+Fgi8ZMV34zHkfjNlypg=----ATTACHMENT:----NjY2MDY0NjM0NTU3OTQwNCA4NjQ0MDMyODQ0NDg5MTI2IDcxODUzOTI1MDQ1OTExOTA=