From c67e2f7f8a084b519b567ed3ef90cbfb21379c17 Mon Sep 17 00:00:00 2001 From: "as2252258@163.com" Date: Sun, 2 May 2021 17:51:36 +0800 Subject: [PATCH] modify --- Database/Connection.php | 496 ++++++++++++++++++++-------------------- 1 file changed, 248 insertions(+), 248 deletions(-) diff --git a/Database/Connection.php b/Database/Connection.php index ca9eef49..ca1f5337 100644 --- a/Database/Connection.php +++ b/Database/Connection.php @@ -27,293 +27,293 @@ use Snowflake\Snowflake; */ class Connection extends Component { - const TRANSACTION_COMMIT = 'transaction::commit'; - const TRANSACTION_ROLLBACK = 'transaction::rollback'; + const TRANSACTION_COMMIT = 'transaction::commit'; + const TRANSACTION_ROLLBACK = 'transaction::rollback'; - public string $id = 'db'; - public string $cds = ''; - public string $password = ''; - public string $username = ''; - public string $charset = 'utf-8'; - public string $tablePrefix = ''; + public string $id = 'db'; + public string $cds = ''; + public string $password = ''; + public string $username = ''; + public string $charset = 'utf-8'; + public string $tablePrefix = ''; - public int $timeout = 1900; + public int $timeout = 1900; - public int $maxNumber = 200; + public int $maxNumber = 200; - /** - * @var bool - * enable database cache - */ - public bool $enableCache = false; - public string $cacheDriver = 'redis'; + /** + * @var bool + * enable database cache + */ + public bool $enableCache = false; + public string $cacheDriver = 'redis'; - /** - * @var array - * - * @example [ - * 'cds' => 'mysql:dbname=dbname;host=127.0.0.1', - * 'username' => 'root', - * 'password' => 'root' - * ] - */ - public array $slaveConfig = []; + /** + * @var array + * + * @example [ + * 'cds' => 'mysql:dbname=dbname;host=127.0.0.1', + * 'username' => 'root', + * 'password' => 'root' + * ] + */ + public array $slaveConfig = []; - private ?Schema $_schema = null; + private ?Schema $_schema = null; - /** - * @throws Exception - */ - public function init() - { - Event::on(Event::SYSTEM_RESOURCE_CLEAN, [$this, 'disconnect']); - Event::on(Event::SYSTEM_RESOURCE_RELEASES, [$this, 'clear_connection']); - } + /** + * @throws Exception + */ + public function init() + { + Event::on(Event::SYSTEM_RESOURCE_CLEAN, [$this, 'disconnect']); + Event::on(Event::SYSTEM_RESOURCE_RELEASES, [$this, 'clear_connection']); + } - /** - * @throws Exception - */ - public function enablingTransactions() - { - if (!Db::transactionsActive()) { - return; - } - $this->beginTransaction(); + /** + * @throws Exception + */ + public function enablingTransactions() + { + if (!Db::transactionsActive()) { + return; + } + $this->beginTransaction(); - Event::on(Connection::TRANSACTION_COMMIT, [$this, 'commit'], false, true); - Event::on(Connection::TRANSACTION_ROLLBACK, [$this, 'rollback'], false, true); - } + Event::on(Connection::TRANSACTION_COMMIT, [$this, 'commit'], false, true); + Event::on(Connection::TRANSACTION_ROLLBACK, [$this, 'rollback'], false, true); + } - /** - * @param null $sql - * @return PDO - * @throws Exception - */ - public function getConnect($sql = NULL): PDO - { - return $this->getPdo($sql); - } + /** + * @param null $sql + * @return PDO + * @throws Exception + */ + public function getConnect($sql = NULL): PDO + { + return $this->getPdo($sql); + } - /** - * @throws Exception - */ - public function fill() - { - $connections = $this->connections(); - $connections->initConnections('mysql', $this->cds, true, $this->maxNumber); - if (!empty($this->slaveConfig)) { - $connections->initConnections('mysql', $this->slaveConfig['cds'], false, $this->maxNumber); - } - } + /** + * @throws Exception + */ + public function fill() + { + $connections = $this->connections(); + $connections->initConnections('mysql', $this->cds, true, $this->maxNumber); + if (!empty($this->slaveConfig)) { + $connections->initConnections('mysql', $this->slaveConfig['cds'], false, $this->maxNumber); + } + } - /** - * @param $sql - * @return PDO - * @throws Exception - */ - private function getPdo($sql): PDO - { - $connections = $this->connections(); - $connections->setTimeout($this->timeout); - if ($this->isWrite($sql)) { - $connect = $connections->get(['cds' => $this->cds, 'username' => $this->username, 'password' => $this->password], true); - } else { - $connect = $connections->get(['cds' => $this->slaveConfig['cds'], 'username' => $this->username, 'password' => $this->password], false); - } - return $connect; - } + /** + * @param $sql + * @return PDO + * @throws Exception + */ + private function getPdo($sql): PDO + { + $connections = $this->connections(); + $connections->setTimeout($this->timeout); + if ($this->isWrite($sql)) { + $connect = $connections->get(['cds' => $this->cds, 'username' => $this->username, 'password' => $this->password], true); + } else { + $connect = $connections->get(['cds' => $this->slaveConfig['cds'], 'username' => $this->username, 'password' => $this->password], false); + } + return $connect; + } - /** - * @return mixed - * @throws ReflectionException - * @throws NotFindClassException - */ - public function getSchema(): Schema - { - if ($this->_schema === null) { - $this->_schema = Snowflake::createObject([ - 'class' => Schema::class, - 'db' => $this - ]); - } - return $this->_schema; - } + /** + * @return mixed + * @throws ReflectionException + * @throws NotFindClassException + */ + public function getSchema(): Schema + { + if ($this->_schema === null) { + $this->_schema = Snowflake::createObject([ + 'class' => Schema::class, + 'db' => $this + ]); + } + return $this->_schema; + } - /** - * @param $sql - * @return bool - */ - #[Pure] public function isWrite($sql): bool - { - if (empty($sql)) return false; - if (str_starts_with(strtolower($sql), 'select')) { - return false; - } - return true; - } + /** + * @param $sql + * @return bool + */ + #[Pure] public function isWrite($sql): bool + { + if (empty($sql)) return false; + if (str_starts_with(strtolower($sql), 'select')) { + return false; + } + return true; + } - /** - * @return mixed - * @throws Exception - */ - public function getCacheDriver(): mixed - { - if (!$this->enableCache) { - return null; - } - return Snowflake::app()->get($this->cacheDriver); - } + /** + * @return mixed + * @throws Exception + */ + public function getCacheDriver(): mixed + { + if (!$this->enableCache) { + return null; + } + return Snowflake::app()->get($this->cacheDriver); + } - /** - * @return PDO - * @throws Exception - */ - public function masterInstance(): PDO - { - return $this->connections()->get([ - 'cds' => $this->cds, 'username' => $this->username, 'password' => $this->password - ], true); - } + /** + * @return PDO + * @throws Exception + */ + public function masterInstance(): PDO + { + return $this->connections()->get([ + 'cds' => $this->cds, 'username' => $this->username, 'password' => $this->password + ], true); + } - /** - * @return PDO - * @throws Exception - */ - public function slaveInstance(): PDO - { - if ($this->inTransaction() || empty($this->slaveConfig)) { - return $this->masterInstance(); - } - return $this->connections()->get($this->slaveConfig, false); - } + /** + * @return PDO + * @throws Exception + */ + public function slaveInstance(): PDO + { + if (empty($this->slaveConfig)) { + $this->slaveConfig = ['cds' => $this->cds, 'username' => $this->username, 'password' => $this->password]; + } + return $this->connections()->get($this->slaveConfig, false); + } - /** - * @return \Snowflake\Pool\Connection - * @throws Exception - */ - private function connections(): \Snowflake\Pool\Connection - { - return Snowflake::app()->getMysqlFromPool(); - } + /** + * @return \Snowflake\Pool\Connection + * @throws Exception + */ + private function connections(): \Snowflake\Pool\Connection + { + return Snowflake::app()->getMysqlFromPool(); + } - /** - * @return $this - * @throws Exception - */ - public function beginTransaction(): static - { - $this->connections()->beginTransaction($this->cds); - return $this; - } + /** + * @return $this + * @throws Exception + */ + public function beginTransaction(): static + { + $this->connections()->beginTransaction($this->cds); + return $this; + } - /** - * @return $this|bool - * @throws Exception - */ - public function inTransaction(): bool|static - { - return $this->connections()->inTransaction($this->cds); - } + /** + * @return $this|bool + * @throws Exception + */ + public function inTransaction(): bool|static + { + return $this->connections()->inTransaction($this->cds); + } - /** - * @throws Exception - * 事务回滚 - */ - public function rollback() - { - $this->connections()->rollback($this->cds); - } + /** + * @throws Exception + * 事务回滚 + */ + public function rollback() + { + $this->connections()->rollback($this->cds); + } - /** - * @throws Exception - * 事务提交 - */ - public function commit() - { - $this->connections()->commit($this->cds); - } + /** + * @throws Exception + * 事务提交 + */ + public function commit() + { + $this->connections()->commit($this->cds); + } - /** - * @param $sql - * @return PDO - * @throws Exception - */ - public function refresh($sql): PDO - { - if ($this->isWrite($sql)) { - $instance = $this->masterInstance(); - } else { - $instance = $this->slaveInstance(); - } - return $instance; - } + /** + * @param $sql + * @return PDO + * @throws Exception + */ + public function refresh($sql): PDO + { + if ($this->isWrite($sql)) { + $instance = $this->masterInstance(); + } else { + $instance = $this->slaveInstance(); + } + return $instance; + } - /** - * @param $sql - * @param array $attributes - * @return Command - * @throws - */ - public function createCommand($sql = null, $attributes = []): Command - { - $command = new Command(['db' => $this, 'sql' => $sql]); - return $command->bindValues($attributes); - } + /** + * @param $sql + * @param array $attributes + * @return Command + * @throws + */ + public function createCommand($sql = null, $attributes = []): Command + { + $command = new Command(['db' => $this, 'sql' => $sql]); + return $command->bindValues($attributes); + } - /** - * - * 回收链接 - * @throws - */ - public function release() - { - $connections = $this->connections(); + /** + * + * 回收链接 + * @throws + */ + public function release() + { + $connections = $this->connections(); - $connections->release($this->cds, true); - $connections->release($this->slaveConfig['cds'], false); - } + $connections->release($this->cds, true); + $connections->release($this->slaveConfig['cds'], false); + } - /** - * @throws Exception - */ - public function recovery() - { - $connections = $this->connections(); + /** + * @throws Exception + */ + public function recovery() + { + $connections = $this->connections(); - $connections->release($this->cds, true); - $connections->release($this->slaveConfig['cds'], false); - } + $connections->release($this->cds, true); + $connections->release($this->slaveConfig['cds'], false); + } - /** - * - * 回收链接 - * @throws - */ - public function clear_connection() - { - $connections = $this->connections(); + /** + * + * 回收链接 + * @throws + */ + public function clear_connection() + { + $connections = $this->connections(); - $connections->release($this->cds, true); - $connections->release($this->slaveConfig['cds'], false); - } + $connections->release($this->cds, true); + $connections->release($this->slaveConfig['cds'], false); + } - /** - * @throws Exception - */ - public function disconnect() - { - $connections = $this->connections(); - $connections->disconnect($this->cds, true); - $connections->disconnect($this->slaveConfig['cds'], false); - } + /** + * @throws Exception + */ + public function disconnect() + { + $connections = $this->connections(); + $connections->disconnect($this->cds, true); + $connections->disconnect($this->slaveConfig['cds'], false); + } }