parent
This commit is contained in:
		
							parent
							
								
									7542ae1ac9
								
							
						
					
					
						commit
						26679ace12
					
				
							
								
								
									
										33
									
								
								index.php
								
								
								
								
							
							
						
						
									
										33
									
								
								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); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue