samsmithkruz / database-handler
A reusable database handler supporting SQL & NoSQL.
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/samsmithkruz/database-handler
Requires
- php: >=7.4 || ^8.0
- ext-pdo: *
- mongodb/mongodb: ^1.21
- predis/predis: ^2.3
Requires (Dev)
- phpunit/phpunit: ^9.5
README
A reusable PHP database handler supporting SQL (MySQL, PostgreSQL) and NoSQL (MongoDB, Redis).
Overview
database-handler is a lightweight, flexible, and reusable PHP package that provides a unified interface for interacting with both SQL and NoSQL databases.
It simplifies database operations and supports MySQL, PostgreSQL, MongoDB, and Redis, making it ideal for modern web applications.
Features
✅ Multi-Database Support - Works with MySQL, PostgreSQL, MongoDB, and Redis.
✅ Unified API - Consistent methods across different database types.
✅ PSR-4 Autoloading - Easy to integrate into any PHP project.
✅ Flexible Queries - Raw queries, transactions, and batch operations supported.
✅ Exception Handling - Catches and logs errors gracefully.
✅ Lightweight & Fast - Designed for efficiency with minimal dependencies.
Installation
Install via Composer:
composer require samsmithkruz/database-handler
Configuration
Create a database configuration array based on your preferred database.
MySQL / PostgreSQL Example
use SamsmithKruz\Database\Database; $config = [ 'driver' => 'mysql', // or 'pgsql' for PostgreSQL 'host' => '127.0.0.1', 'port' => 3306, 'database' => 'test_db', 'username' => 'root', 'password' => '', 'charset' => 'utf8mb4' ]; $db = new Database($config);
MongoDB Example
use SamsmithKruz\Database\Database; $config = [ 'driver' => 'mongodb', 'uri' => 'mongodb://127.0.0.1:27017', 'database' => 'test_db' ]; $db = new Database($config);
Redis Example
use SamsmithKruz\Database\Database; $config = [ 'driver' => 'redis', 'scheme' => 'tcp', // Optional 'host' => '127.0.0.1', 'timeout' => '0.0', // Seconds 'port' => 6379 ]; $db = new Database($config);
Usage Guide
Insert Data
$data = ['name' => 'John Doe', 'email' => 'john@example.com']; $db->insert('users', $data);
Find One Record
$user = $db->findOne('users', ['email' => 'john@example.com']); print_r($user);
Find Multiple Records
$users = $db->findMany('users', ['status' => 'active']);
Update Data
$db->updateOne('users', ['email' => 'john@example.com'], ['status' => 'inactive']);
Delete Data
$db->deleteOne('users', ['email' => 'john@example.com']);
Raw Query (MongoDB)
$query = [['$match' => ['status' => 'active']]]; $results = $db->rawQuery('users', $query);
Running Tests
Ensure you have PHPUnit installed and run:
vendor/bin/phpunit --configuration phpunit.xml
Contributing
We welcome contributions! 🚀
- Fork the repository
- Create a new feature branch (
git checkout -b feature-name) - Make your changes
- Submit a pull request
See CONTRIBUTING.md for more details.
License
This package is licensed under the MIT License.
See the LICENSE file for details.
Author
👤 Samuel Benny (Smith Kruz)
🔗 GitHub: samsmithkruz
🔗 LinkedIn: smithkruz