bjornbasar / karhu-db
Thin PDO wrapper + active-record base for the karhu PHP microframework
dev-main
2026-04-14 06:54 UTC
Requires
- php: >=8.3
Requires (Dev)
- bjornbasar/karhu: ^0.1
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^11.0
Suggests
- bjornbasar/karhu: The karhu microframework (for UserRepositoryInterface)
This package is auto-updated.
Last update: 2026-04-14 21:55:41 UTC
README
Thin PDO wrapper + active-record base for the karhu PHP microframework.
Zero runtime dependencies. All queries use prepared statements.
Install
composer require bjornbasar/karhu-db
Usage
use Karhu\Db\Connection; $db = new Connection('mysql:host=localhost;dbname=myapp', 'user', 'pass'); // Query helpers $rows = $db->fetchAll('SELECT * FROM users WHERE active = :active', ['active' => 1]); $user = $db->fetchOne('SELECT * FROM users WHERE id = :id', ['id' => 42]); $count = $db->fetchScalar('SELECT COUNT(*) FROM users'); // Insert / update / delete $id = $db->insert('users', ['name' => 'Bjorn', 'email' => 'bjorn@example.com']); $db->update('users', ['name' => 'Updated'], ['id' => $id]); $db->delete('users', ['id' => $id]);
Active Record
use Karhu\Db\TableBase; final class UserTable extends TableBase { protected string $table = 'users'; protected string $primaryKey = 'id'; } $users = new UserTable($db); $users->getAll(); $users->get(42); $users->getBy(['role' => 'admin']); $users->create(['name' => 'New User']); $users->update(42, ['name' => 'Updated']); $users->delete(42); $users->count(['role' => 'admin']);
UserRepositoryInterface
Implements karhu's UserRepositoryInterface for RBAC:
use Karhu\Db\PdoUserRepository; $userRepo = new PdoUserRepository($db); $app->container()->set(UserRepositoryInterface::class, $userRepo);
Expects tables: users (username, password_hash) and user_roles (username, role).