diff --git a/index.php b/index.php index fe9df6c..70842fe 100644 --- a/index.php +++ b/index.php @@ -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);