Just use Composer:
composer require semperton/database
Database requires PHP 7.4+
The PDOConnection class is a PDO wrapper.
Its constructor accepts the same parameters as the PDO constructor.
useSemperton\Database\Connection\PDOConnection;
$connection = newPDOConnection('dsn', null, null, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);The internal PDO object is lazily created, when you make the first database call.
You can pass a callable as the 5th argument to the PDOConnection constructor
that gets called, when PDO first initializes.
interface ConnectionInterface
{
publicfunctionexecute(string$sql, ?array$params = null): bool;
publicfunctionfetchRow(string$sql, ?array$params = null): ?array;
publicfunctionfetchColumn(string$sql, ?array$params = null, int$column = 0): Generator;
publicfunctionfetchAll(string$sql, ?array$params = null): Generator;
publicfunctionfetchResult(string$sql, ?array$params = null): ResultSetInterface;
publicfunctionfetchValue(string$sql, ?array$params = null);
publicfunctioninTransaction(): bool;
publicfunctionbeginTransaction(): bool;
publicfunctioncommit(): bool;
publicfunctionrollBack(): bool;
publicfunctionlastInsertId(): int;
publicfunctionaffectedRows(): int;
}The ResultSet class is a wrapper around PDOStatement::execute and PDOStatement::fetch calls.
It's an Iterator with additional first(), count() and toArray() methods.
$users = $connection->fetchAll('select * from user limit :limit', ['limit' => 5]);
$firstUser = $users->first();
foreach($usersas$user){
// ...
}
$userCount = $users->count();
$userArray = $users->toArray();