/** * @param array $params * @return void */ public function execute($params = null) { if ($params !== null) { $this->params = $params; } EventEmitter::emit('hyperframework.db.prepared_statement_executing', [$this, $this->params]); $e = null; try { $this->pdoStatement->execute($params); } catch (Exception $e) { throw $e; } catch (Throwable $e) { throw $e; } finally { EventEmitter::emit('hyperframework.db.prepared_statement_executed', [$e === null ? 'success' : 'failure']); } }
/** * @param string $sql * @param bool $isQuery * @param string $fetchOptions * @return mixed */ private function sendSql($sql, $isQuery = false, $fetchOptions = null) { EventEmitter::emit('hyperframework.db.sql_statement_executing', [$this, $sql]); $result = null; $e = null; try { if ($isQuery) { if ($fetchOptions === null) { $result = parent::query($sql); } else { switch (count($fetchOptions)) { case 0: break; case 1: $result = parent::query($sql, $fetchOptions[0]); break; case 2: $result = parent::query($sql, $fetchOptions[0], $fetchOptions[1]); break; default: $result = parent::query($sql, $fetchOptions[0], $fetchOptions[1], $fetchOptions[2]); } } } else { $result = parent::exec($sql); } } catch (Exception $e) { throw $e; } catch (Throwable $e) { throw $e; } finally { EventEmitter::emit('hyperframework.db.sql_statement_executed', [$e === null ? 'success' : 'failure']); } if ($isQuery) { return new DbStatement($result, $this); } return $result; }
public function run() { EventEmitter::bindAll([['name' => 'hyperframework.db.transaction_operation_executing', 'callback' => [$this, 'onTransactionOperationExecuting']], ['name' => 'hyperframework.db.transaction_operation_executed', 'callback' => [$this, 'onTransactionOperationExecuted']], ['name' => 'hyperframework.db.sql_statement_executing', 'callback' => [$this, 'onSqlStatementExecuting']], ['name' => 'hyperframework.db.sql_statement_executed', 'callback' => [$this, 'onSqlStatementExecuted']], ['name' => 'hyperframework.db.prepared_statement_executing', 'callback' => [$this, 'onPreparedStatementExecuting']], ['name' => 'hyperframework.db.prepared_statement_executed', 'callback' => [$this, 'onPreparedStatementExecuted']]]); }