59 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
<?php
 | 
						|
 | 
						|
namespace Sieciech\Orm8;
 | 
						|
 | 
						|
use PDO;
 | 
						|
 | 
						|
interface ISqlBase {
 | 
						|
    public function Get(): string;
 | 
						|
    //public function Insert(): string;
 | 
						|
    //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 static $sql;
 | 
						|
    
 | 
						|
    public function __construct(ISqlBase $sql) {
 | 
						|
        self::$sql = $sql;
 | 
						|
    }
 | 
						|
    
 | 
						|
    public static function Get(int $id) {
 | 
						|
        return ConnectionManager::Query(
 | 
						|
            self::$sql->Get(),
 | 
						|
            [],
 | 
						|
            get_called_class());
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
class JobSql implements ISqlBase {
 | 
						|
    public function Get(): string {
 | 
						|
        return "Select * from jobs where id = :id";
 | 
						|
    }
 | 
						|
    
 | 
						|
}
 | 
						|
 | 
						|
class Job extends BaseModel {
 | 
						|
    public function __construct() {
 | 
						|
        parent::__construct( new JobSql() );
 | 
						|
    }
 | 
						|
}
 | 
						|
$dns = 'pgsql:host=localhost;port=5432;dbname=dynamic_dev;user=test;password=pas123';
 | 
						|
ConnectionManager::Connect($dns);
 | 
						|
echo "
 | 
						|
 | 
						|
";
 | 
						|
echo Job::Get(10);
 | 
						|
echo "
 | 
						|
 | 
						|
"; |