diff --git a/index.php b/index.php index 9c65fac..600c407 100644 --- a/index.php +++ b/index.php @@ -8,25 +8,35 @@ interface ISqlBase { //public function Update(): string; //public function Delete(): string; } - +class ConnectionManager { + private static $connection; + public static function connect(string $connectionString) { + self::$connection = new PDO($connectionString); + } + public static function Query(string $query, $params, $output = 'stdObject') { + $stmt = self::$connection->prepare($query); + $stmt->execute($params); + return $stmt->fetchObject($output); + } +} abstract class BaseModel { - protected $sql; + protected static $sql; public function __construct(ISqlBase $sql) { - $this->sql = $sql; + self::$sql = $sql; } public static function Get(int $id) { - return get_called_class(); - $stmt = $pdo->prepare('SELECT id, name FROM users WHERE id=?'); - $stmt->execute([$id]); - return $stmt->fetchObject(__CLASS__); + return ConnectionManager::Query( + self::$sql->Get(), + [], + get_called_class()); } } class JobSql implements ISqlBase { public function Get(): string { - return ""; + return "Select * from jobs where id = :id"; } } @@ -36,6 +46,8 @@ class Job extends BaseModel { parent::__construct( new JobSql() ); } } +$dns = 'pgsql:host=localhost;port=5432;dbname=dynamic_dev;user=test;password=pas123'; +ConnectionManager::Connect($dns); echo " ";