use 'Connexion' class instead of storing prepared statements

pull/6/head
maxime.batista 1 year ago
parent 0b6c0a734c
commit f9d25a40a7

@ -4,6 +4,7 @@ require "../vendor/autoload.php";
require "../config.php"; require "../config.php";
require "../sql/database.php"; require "../sql/database.php";
use App\Connexion;
use App\Controller\SampleFormController; use App\Controller\SampleFormController;
use App\Gateway\FormResultGateway; use App\Gateway\FormResultGateway;
@ -23,7 +24,7 @@ function get_base_path() {
} }
$basePath = get_base_path(); $basePath = get_base_path();
$pdo = get_database(); $pdo = new Connexion(get_database());
// routes initialization // routes initialization
$router = new AltoRouter(); $router = new AltoRouter();

@ -0,0 +1,35 @@
<?php
namespace App;
use \PDO;
class Connexion {
private PDO $pdo;
/**
* @param PDO $pdo
*/
public function __construct(PDO $pdo)
{
$this->pdo = $pdo;
}
public function exec(string $query, array $args) {
$stmnt = $this->pdo->prepare($query);
foreach ($args as $name => $value) {
$stmnt->bindValue($name, $value[0], $value[1]);
}
$stmnt->execute();
}
public function fetch(string $query, array $args): array {
$stmnt = $this->pdo->prepare($query);
foreach ($args as $name => $value) {
$stmnt->bindValue($name, $value[0], $value[1]);
}
$stmnt->execute();
return $stmnt->fetchAll();
}
}

@ -3,32 +3,31 @@
namespace App\Gateway; namespace App\Gateway;
use PDO; use PDO;
use PDOStatement; use App\Connexion;
/** /**
* A sample gateway, that stores the sample form's result. * A sample gateway, that stores the sample form's result.
*/ */
class FormResultGateway { class FormResultGateway {
private PDOStatement $insertion_stmnt; private Connexion $con;
private PDOStatement $list_stmnt;
public function __construct(PDO $pdo) public function __construct(Connexion $con) {
{ $this->con = $con;
$this->insertion_stmnt = $pdo->prepare("INSERT INTO FormEntries VALUES (:name, :description)");
$this->list_stmnt = $pdo->prepare("SELECT * FROM FormEntries");
} }
function insert(string $username, string $description) { function insert(string $username, string $description) {
$this->insertion_stmnt->bindValue(":name", $username, PDO::PARAM_STR); $this->con->exec(
$this->insertion_stmnt->bindValue(":description", $description, PDO::PARAM_STR); "INSERT INTO FormEntries VALUES (:name, :description)",
[
$this->insertion_stmnt->execute(); ":name" => [$username, PDO::PARAM_STR],
"description" => [$description, PDO::PARAM_STR]
]
);
} }
function listResults(): array { function listResults(): array {
$this->list_stmnt->execute(); return $this->con->fetch("SELECT * FROM FormEntries", []);
return $this->list_stmnt->fetchAll();
} }
} }
Loading…
Cancel
Save