This commit is contained in:
Michał Sieciechowicz 2021-02-26 22:24:44 +01:00
parent 231710e996
commit 81855c900e
1 changed files with 20 additions and 8 deletions

View File

@ -8,25 +8,35 @@ interface ISqlBase {
//public function Update(): string; //public function Update(): string;
//public function Delete(): 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 { abstract class BaseModel {
protected $sql; protected static $sql;
public function __construct(ISqlBase $sql) { public function __construct(ISqlBase $sql) {
$this->sql = $sql; self::$sql = $sql;
} }
public static function Get(int $id) { public static function Get(int $id) {
return get_called_class(); return ConnectionManager::Query(
$stmt = $pdo->prepare('SELECT id, name FROM users WHERE id=?'); self::$sql->Get(),
$stmt->execute([$id]); [],
return $stmt->fetchObject(__CLASS__); get_called_class());
} }
} }
class JobSql implements ISqlBase { class JobSql implements ISqlBase {
public function Get(): string { public function Get(): string {
return ""; return "Select * from jobs where id = :id";
} }
} }
@ -36,6 +46,8 @@ class Job extends BaseModel {
parent::__construct( new JobSql() ); parent::__construct( new JobSql() );
} }
} }
$dns = 'pgsql:host=localhost;port=5432;dbname=dynamic_dev;user=test;password=pas123';
ConnectionManager::Connect($dns);
echo " echo "
"; ";