Класс для работы с базой данных - IlyaKovanov/lib GitHub Wiki
settings.php
//src/settings.php
<?php
return [
'db' => [
'host' => 'localhost',
'dbname' => 'my_project',
'user' => 'root',
'password' => '',
]
];
Db.php
//src/MyProject/Services/Db.php
<?php
namespace MyProject\Services;
class Db
{
private static $instance;
/** @var \PDO */
private $pdo;
private function __construct()
{
$dbOptions = (require __DIR__ . '/../../settings.php')['db'];
$this->pdo = new \PDO(
'mysql:host=' . $dbOptions['host'] . ';dbname=' . $dbOptions['dbname'],
$dbOptions['user'],
$dbOptions['password']
);
$this->pdo->exec('SET NAMES UTF8');
}
public function query(string $sql, array $params = [], string $className = 'stdClass'): ?array
{
$sth = $this->pdo->prepare($sql);
$result = $sth->execute($params);
if (false === $result) {
return null;
}
return $sth->fetchAll(\PDO::FETCH_CLASS, $className);
}
public static function getInstance(): self
{
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
}
вызов
Db::getInstance()
return $db->query('SELECT * FROM `articles`;', [], Article::class);