diff --git a/extdbms/lib/Database/QueryBuilder.php b/extdbms/lib/Database/QueryBuilder.php index 81b6b9b..10276f8 100644 --- a/extdbms/lib/Database/QueryBuilder.php +++ b/extdbms/lib/Database/QueryBuilder.php @@ -22,15 +22,15 @@ class QueryBuilder { $this->pdo = $pdo; } - final public function setDebug(bool $debug): void + final final public function setDebug(bool $debug): void { $this->_debug = $debug; } - final public function getLastQuery(): string + final final public function getLastQuery(): string { return $this->latestQuery; } - public function table(string $table): static + final public function table(string $table): static { $this->table = $table; return $this; @@ -68,14 +68,14 @@ class QueryBuilder } //Select부분분 - public function select(array|string $columns): static + final public function select(array|string $columns): static { $this->select = is_array($columns) ? $columns : explode(',', $columns); return $this; } //Where절부분 - public function where(array|string $column, mixed $operator = null, mixed $value = null): static + final public function where(array|string $column, mixed $operator = null, mixed $value = null): static { if (is_array($column)) { foreach ($column as $col => $val) { @@ -98,12 +98,12 @@ class QueryBuilder $this->bindings[$placeholder] = $value; return $this; } - public function orWhere(string $column, mixed $operator = null, mixed $value = null): static + final public function orWhere(string $column, mixed $operator = null, mixed $value = null): static { return $this->where($column, $operator, $value, "OR"); } - public function whereIn(string $column, array $values, string $boolean = 'AND', $conditon_boolean = "IN"): static + final public function whereIn(string $column, array $values, string $boolean = 'AND', $conditon_boolean = "IN"): static { if (empty($values)) { throw new \InvalidArgumentException(__FUNCTION__ . ": values 배열이 비어있을 수 없습니다."); @@ -118,14 +118,14 @@ class QueryBuilder $this->where[] = ['condition' => $condition, 'boolean' => $boolean]; return $this; } - public function whereNotIn(string $column, array $values, $boolean = "AND", $conditon_boolean = "NOT IN"): static + final public function whereNotIn(string $column, array $values, $boolean = "AND", $conditon_boolean = "NOT IN"): static { if (empty($values)) { throw new \InvalidArgumentException(__FUNCTION__ . ": values 배열이 비어있을 수 없습니다."); } return $this->whereIn($column, $values, $boolean, $conditon_boolean); } - public function orWhereIn(string $column, array $values, $boolean = "OR", $conditon_boolean = "IN"): static + final public function orWhereIn(string $column, array $values, $boolean = "OR", $conditon_boolean = "IN"): static { if (empty($values)) { throw new \InvalidArgumentException(__FUNCTION__ . ": values 배열이 비어있을 수 없습니다."); @@ -134,14 +134,14 @@ class QueryBuilder } //Join - public function join(string $table, string $on, string $type = 'INNER'): static + final public function join(string $table, string $on, string $type = 'INNER'): static { $this->joins[] = strtoupper($type) . " JOIN $table ON $on"; return $this; } //Order - public function orderBy(mixed $column, string $direction = 'ASC'): static + final public function orderBy(mixed $column, string $direction = 'ASC'): static { if (is_array($column)) { // 배열 형식의 여러 컬럼 정렬을 처리 @@ -156,19 +156,19 @@ class QueryBuilder return $this; } //Limit부분 - public function limit(int $limit): static + final public function limit(int $limit): static { $this->limit = $limit; return $this; } - public function offset(int $offset): static + final public function offset(int $offset): static { $this->offset = $offset; return $this; } //Customer SQL 실행부분 - public function raw(string $sql, array $bindings = []): array + final public function raw(string $sql, array $bindings = []): array { $stmt = $this->pdo->prepare($sql); foreach ($bindings as $key => $value) { @@ -180,7 +180,7 @@ class QueryBuilder //Result부분 //binding까지 완료한 SQL문을 return함 - public function toRawSql(): string + final public function toRawSql(): string { $sql = $this->buildSelectSql(); $raw = $sql; @@ -196,7 +196,7 @@ class QueryBuilder } return $raw; } - public function get(): array + final public function get(): array { $sql = $this->buildSelectSql(); if ($this->_debug) { @@ -213,14 +213,14 @@ class QueryBuilder return $stmt->fetchAll(PDO::FETCH_ASSOC); } - public function first(): ?array + final public function first(): ?array { $this->limit = 1; $results = $this->get(); return $results[0] ?? null; } - public function count(string $select = "'COUNT(*) as cnt'"): int + final public function count(string $select = "COUNT(*) as cnt"): int { $this->select = [$select]; $results = $this->get(); @@ -228,7 +228,7 @@ class QueryBuilder } //CUD부분 - public function insert(array $data): bool + final public function insert(array $data): bool { $columns = array_keys($data); $placeholders = array_map(fn($c) => ':' . $c, $columns); @@ -240,7 +240,7 @@ class QueryBuilder return $stmt->execute(); } - public function update(array $data): bool + final public function update(array $data): bool { if (empty($this->where)) throw new \Exception("Update without WHERE is not allowed."); @@ -259,7 +259,7 @@ class QueryBuilder return $stmt->execute(); } - public function delete(): bool + final public function delete(): bool { if (empty($this->where)) throw new \Exception("Delete without WHERE is not allowed."); $sql = "DELETE FROM {$this->table} WHERE " . implode(' AND ', $this->where); @@ -271,17 +271,17 @@ class QueryBuilder } //transaction관련련 - public function beginTransaction(): void + final public function beginTransaction(): void { $this->pdo->beginTransaction(); } - public function commit(): void + final public function commit(): void { $this->pdo->commit(); } - public function rollBack(): void + final public function rollBack(): void { if ($this->pdo->inTransaction()) { $this->pdo->rollBack(); diff --git a/extdbms/lib/Services/CommonService.php b/extdbms/lib/Services/CommonService.php index b9669a1..ba40fdc 100644 --- a/extdbms/lib/Services/CommonService.php +++ b/extdbms/lib/Services/CommonService.php @@ -42,7 +42,7 @@ abstract class CommonService extends Core } return $entitys; } // - final public function getCount(string $select = "'COUNT(*) as cnt'"): int + final public function getCount(string $select = "COUNT(*) as cnt"): int { $count = $this->getModel()->count($select); // echo "
" . $this->getModel()->getLastQuery();