This commit is contained in:
Michał Sieciechowicz 2021-02-27 11:31:29 +01:00
parent 7542ae1ac9
commit 26679ace12
1 changed files with 27 additions and 6 deletions

View File

@ -18,14 +18,18 @@ class ConnectionManager {
public static function Query(string $query, $params, $output = 'stdObject') {
$stmt = self::$connection->prepare($query);
$stmt->execute($params);
$stmt->setFetchMode(PDO::FETCH_INTO, new $output());
$stmt->setFetchMode(PDO::FETCH_CLASS, $output);
return $stmt->fetch();
}
public static function QueryAll(string $query, $params, $output = 'stdObject') {
$stmt = self::$connection->prepare($query);
$stmt->execute($params);
$stmt->setFetchMode(PDO::FETCH_CLASS, $output);
return $stmt->fetchAll();
}
}
abstract class BaseModel {
protected static $sql = null;
protected static ISqlBase $sql = null;
public static function Get(int $id) {
static::Initialize();
@ -35,16 +39,30 @@ abstract class BaseModel {
get_called_class());
}
protected static function QueryAll($sql, $params) {
static::Initialize();
return ConnectionManager::QueryAll(
$sql,
$params,
get_called_class());
}
abstract public static function Initialize();
}
class JobSql implements ISqlBase {
interface IJobSql implements ISqlBase {
public function GetLast10(): string;
}
class JobSql implements IJobSql {
public function Get(): string {
return "Select * from jobs where id = :id";
}
public function GetLast10() {
return "select * from jobs order by id desc limit 10";
}
}
class Job extends BaseModel {
protected static IJobSql $sql;
public int $id;
public float $budget;
public static function Initialize() {
@ -52,6 +70,9 @@ class Job extends BaseModel {
self::$sql = new JobSql();
}
}
public static function GetLast10() {
return self::QueryAll(self::$sql->GetLast10(), []);
}
}
$dns = 'pgsql:host=localhost;port=5432;dbname=dynamic_dev;user=test;password=pass123';
ConnectionManager::Connect($dns);