fix: not psr compliant

This commit is contained in:
Guillermo Pages
2021-09-13 15:56:55 +02:00
parent d83b2bbdd2
commit 11579d5170

View File

@@ -0,0 +1,55 @@
<?php
namespace Gbili\PDOWithFilters;
class PDOWithFilters {
private static \PDO $pdo;
private static array $filtersConf = [];
public static function prepare($sql, array $filtersConf = []) {
$filters = !empty($filtersConf) ? $filtersConf : self::$filtersConf;
$finalSql = !empty($filters)
? self::applyFilters($sql, $filters)
: $sql;
return self::$pdo->prepare($finalSql);
}
public static function setFilters($filtesConf) {
self::$filtersConf = $filtesConf;
}
public static function applyFilter($sql, $needles, $needlesModifier) {
$replacements = array_map(function ($needle) use ($needlesModifier) {
return sprintf($needlesModifier, $needle);
}, $needles);
return str_replace($needles, $replacements, $sql);
}
public static function applyFilters($sql, $filtersConf) {
return array_reduce($filtersConf, function ($prev, $filterConf) {
$needles = $filterConf['params']['needles'];
$needlesModifier = $filterConf['params']['needle_modifier'];
return self::applyFilter($prev, $needles, $needlesModifier);
}, $sql);
}
public static function connect($dsn, $username, $password) {
if (!empty($pdo)) {
throw new \Exception('Create Pdo only once');
}
self::$pdo = new \PDO($dsn, $username, $password);
return self::$pdo;
}
public static function getPDOInstance() {
if (empty($pdo)) {
throw new \Exception('You must call connect() first');
}
return self::$pdo;
}
public static function prepareExecute($sql, $params) {
}
}