This is an old revision of the document!
Table of Contents
Db
Layer: Core · Source: lib/core/Db.php:22 (lines 22–519)
class Db implements DbInterface
This class provides a database abstraction layer using PDO with MySQL functionality. It implements all methods defined in DbInterface for consistent database operations.
Docblock Metadata
| Tag | Value |
|---|---|
@category | Core Class |
@author | M.Noermoehammad |
@license | MIT |
@version | 1.0 |
@since | Since Release 1.0 |
@see | DbInterface |
Inheritance
| Relation | Type | Meaning |
|---|---|---|
| implements | ''DbInterface'' | contract |
Constants (1)
| Visibility | Name | Value | Line |
|---|---|---|---|
private | STATEMENT_CACHE_MAX | 64; | 88 |
Properties (0)
None declared.
Methods (21)
| Visibility | Method | Summary | Line |
|---|---|---|---|
| public | __construct() | Constructor - Initializes the database connection if config is provided | 103 |
| public | setTablePrefix() | Set table prefix | 115 |
| public | getTablePrefix() | Get table prefix | 125 |
| public | setDbConnection() | Establishes a database connection using PDO | 139 |
| public | isConnected() | Checks if database connection is active | 170 |
| public | closeDbConnection() | Closes the database connection | 180 |
| private | ensureConnection() | Ensures database connection is established before operations | 192 |
| public | dbQuery() | Executes a database query and returns the statement | 207 |
| public | dbSelect() | Executes a SELECT query and returns results | 226 |
| private | prepareCached() | Prepare a SQL statement with table prefix applied, reusing already | 251 |
| public | clearStatementCache() | Forget all cached prepared statements. | 271 |
| public | dbInsert() | Inserts a new record into the specified table | 285 |
| public | dbLastInsertId() | Returns the last inserted ID | 316 |
| public | dbUpdate() | Updates records in the specified table | 332 |
| public | dbReplace() | Performs an INSERT or UPDATE (upsert) operation | 366 |
| public | dbDelete() | Deletes records from the specified table | 405 |
| public | dbTransaction() | Begins a transaction | 436 |
| public | dbCommit() | Commits a transaction | 448 |
| public | dbRollBack() | Rolls back a transaction | 460 |
| public | prepare() | Prepare a SQL statement with table prefix applied. | 477 |
| private | applyTablePrefix() | Apply table prefix to SQL query | 490 |
__construct()
public function __construct(array $config = [], array $options = [])
lines 103–108 (6)
Constructor - Initializes the database connection if config is provided
| Parameter | Type | Default | Description |
|---|---|---|---|
$config | array | [] | Database configuration [DSN, username, password] |
$options | array | [] | Additional PDO connection options |
setTablePrefix()
public function setTablePrefix(string $prefix): void
lines 115–118 (4)
Set table prefix
| Parameter | Type | Default | Description |
|---|---|---|---|
$prefix | string | required | none |
Returns: void
getTablePrefix()
public function getTablePrefix(): string
lines 125–128 (4)
Get table prefix
Takes no parameters.
Returns: string — string
setDbConnection()
public function setDbConnection(array $config = [], array $options = []): void
lines 139–163 (25)
Establishes a database connection using PDO
| Parameter | Type | Default | Description |
|---|---|---|---|
$config | array | [] | Database configuration [DSN, username, password] |
$options | array | [] | Additional PDO connection options |
Returns: void — void
Throws: \InvalidArgumentException, \RuntimeException
isConnected()
public function isConnected(): bool
lines 170–173 (4)
Checks if database connection is active
Takes no parameters.
Returns: bool — bool True if connected, false otherwise
closeDbConnection()
public function closeDbConnection(): void
lines 180–184 (5)
Closes the database connection
Takes no parameters.
Returns: void — void
ensureConnection()
private function ensureConnection(): void
lines 192–197 (6)
Ensures database connection is established before operations
Takes no parameters.
Returns: void — void
Throws: \RuntimeException
dbQuery()
public function dbQuery(string $sql, array $args = []): \PDOStatement
lines 207–214 (8)
Executes a database query and returns the statement
| Parameter | Type | Default | Description |
|---|---|---|---|
$sql | string | required | SQL query to execute |
$args | array | [] | Parameters for prepared statement |
Returns: \PDOStatement — \PDOStatement Executed statement
Throws: \RuntimeException
dbSelect()
public function dbSelect(string $sql, array $parameters = [], int $fetchMode = \PDO::FETCH_OBJ, string $class = ''): array
lines 226–237 (12)
Executes a SELECT query and returns results
| Parameter | Type | Default | Description |
|---|---|---|---|
$sql | string | required | SQL SELECT query |
$parameters | array | [] | Query parameters |
$fetchMode | int | \PDO::FETCH_OBJ | PDO fetch mode (default: PDO::FETCH_OBJ) |
$class | string | '''''' | Class name for PDO::FETCH_CLASS mode |
Returns: array — array Fetched results
Throws: \RuntimeException
prepareCached()
private function prepareCached(string $sql): \PDOStatement
lines 251–261 (11)
Prepare a SQL statement with table prefix applied, reusing already
prepared statements with identical SQL text for the lifetime of the connection (request-scoped). Bound parameters are passed via execute() on each call, which PDO supports repeatedly on the same statement.
The cache is bounded to STATEMENT_CACHE_MAX entries; once full it is reset so the request continues with fresh prepares.
| Parameter | Type | Default | Description |
|---|---|---|---|
$sql | string | required | Fully-prefixed SQL query |
Returns: \PDOStatement — \PDOStatement
clearStatementCache()
public function clearStatementCache(): void
lines 271–274 (4)
Forget all cached prepared statements.
Exposed for tests and called automatically when the connection is re-established or closed.
Takes no parameters.
Returns: void — void
dbInsert()
public function dbInsert(string $tablename, array $params): bool
lines 285–308 (24)
Inserts a new record into the specified table
| Parameter | Type | Default | Description |
|---|---|---|---|
$tablename | string | required | Name of the table |
$params | array | required | Associative array of column ⇒ value pairs |
Returns: bool — bool True on success, false on failure
Throws: \InvalidArgumentException, \RuntimeException
dbLastInsertId()
public function dbLastInsertId(): string
lines 316–320 (5)
Returns the last inserted ID
Takes no parameters.
Returns: string — string Last inserted row ID
Throws: \RuntimeException
dbUpdate()
public function dbUpdate(string $tablename, array $params, array $where): int
lines 332–352 (21)
Updates records in the specified table
| Parameter | Type | Default | Description |
|---|---|---|---|
$tablename | string | required | Name of the table |
$params | array | required | Associative array of column ⇒ value pairs to update |
$where | array | required | Associative array of conditions for WHERE clause |
Returns: int — int Number of affected rows
Throws: \InvalidArgumentException, \RuntimeException
dbReplace()
public function dbReplace(string $tablename, array $params, array $updateParams): bool
lines 366–393 (28)
Performs an INSERT or UPDATE (upsert) operation
Inserts a new record or updates existing one if duplicate key exists
| Parameter | Type | Default | Description |
|---|---|---|---|
$tablename | string | required | Name of the table |
$params | array | required | Associative array of column ⇒ value pairs for insert |
$updateParams | array | required | Associative array of column ⇒ value pairs for update |
Returns: bool — bool True on success, false on failure
Throws: \InvalidArgumentException, \RuntimeException
dbDelete()
public function dbDelete(string $tablename, array $where, ?int $limit = null): int
lines 405–428 (24)
Deletes records from the specified table
| Parameter | Type | Default | Description |
|---|---|---|---|
$tablename | string | required | Name of the table |
$where | array | required | Associative array of conditions for WHERE clause |
$limit | ?int | null | Optional maximum number of rows to delete |
Returns: int — int Number of affected rows
Throws: \InvalidArgumentException, \RuntimeException
dbTransaction()
public function dbTransaction(): bool
lines 436–440 (5)
Begins a transaction
Takes no parameters.
Returns: bool — bool True on success, false on failure
Throws: \RuntimeException
dbCommit()
public function dbCommit(): bool
lines 448–452 (5)
Commits a transaction
Takes no parameters.
Returns: bool — bool True on success, false on failure
Throws: \RuntimeException
dbRollBack()
public function dbRollBack(): bool
lines 460–464 (5)
Rolls back a transaction
Takes no parameters.
Returns: bool — bool True on success, false on failure
Throws: \RuntimeException
prepare()
public function prepare(string $sql, array $driverOptions = [])
lines 477–482 (6)
Prepare a SQL statement with table prefix applied.
Delegates to PDO::prepare() after applying the configured table prefix. This enables legacy code (ApiAuth, API controllers) that calls $dbc→prepare() directly to work correctly with prefixed table names.
| Parameter | Type | Default | Description |
|---|---|---|---|
$sql | string | required | SQL query (may contain unprefixed tbl_ names) |
$driverOptions | array | [] | Optional PDO driver options |
Returns: (none declared) — \PDOStatement|false
applyTablePrefix()
private function applyTablePrefix(string $sql): string
lines 490–518 (29)
Apply table prefix to SQL query
| Parameter | Type | Default | Description |
|---|---|---|---|
$sql | string | required | none |
Returns: string — string
This page is generated from source by 'tools/gendoc'. Edits will be overwritten.
