Interfaces

This commit is contained in:
Juan Pablo Vial
2022-09-08 18:11:46 -04:00
parent ce460740cd
commit 5322d81e1b
4 changed files with 63 additions and 0 deletions

20
src/Concept/Database.php Normal file
View File

@ -0,0 +1,20 @@
<?php
namespace ProVM\Concept;
use PDO;
interface Database
{
public function setHost(string $host): Database;
public function getHost(): string;
public function setPort(int $port): Database;
public function getPort(): int;
public function setName(string $name): Database;
public function getName(): string;
public function setUsername(string $username): Database;
public function getUsername(): string;
public function setPassword(string $password): Database;
public function getPassword(): string;
public function needsUser(): bool;
public function getDSN(): string;
}

View File

@ -0,0 +1,18 @@
<?php
namespace ProVM\Concept\Database;
use PDO;
use ProVM\Concept\Database;
interface Connection
{
public function setDatabase(Database $database): Connection;
public function getDatabase(): Database;
public function connect(): Connection;
public function setPDO(PDO $pdo): Connection;
public function getPDO(): PDO;
public function query(string $query): ResultSet;
public function prepare(string $query): ResultSet;
public function execute(string $query, array $values): ResultSet;
public function transaction(): Transaction;
}

View File

@ -0,0 +1,13 @@
<?php
namespace ProVM\Concept\Database;
use PDOStatement;
interface ResultSet
{
public function __construct(PDOStatement $statement);
public function execute(array $values): ResultSet;
public function getAsArray(): array;
public function getAsObject(): array;
public function getFirst(): mixed;
}

View File

@ -0,0 +1,12 @@
<?php
namespace ProVM\Concept\Database;
interface Transaction
{
public function begin(): Transaction;
public function query(string $query): ResultSet;
public function prepare(string $query): ResultSet;
public function execute(string $query, array $values): ResultSet;
public function commit(): void;
public function rollBack(): void;
}