nayazkaya/ddj-database

Simple multi-connection PDO helper with .env config, robust defaults, and reconnection TTL.

Maintainers

Details

github.com/Nayazkaya/db

Source

Issues

Installs: 2

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

Language:Shell

v1.0.0 2025-09-22 14:18 UTC

This package is auto-updated.

Last update: 2025-09-22 14:37:44 UTC


README

Helper PDO minimaliste avec:

  • Config via .env (pas de secrets commités)
  • Connexions multiples (default, analytics, etc.)
  • Options PDO sûres par défaut
  • Lazy connection, TTL/ping, fermeture des connexions
  • Exceptions typées avec DSN masqué

Installation

composer require nayazkaya/ddj-database

Configuration via .env

Copier .env.example en .env et ajuster:

DB_CONNECTIONS=default

DB_DEFAULT_DSN=mysql:host=127.0.0.1;port=3306;dbname=app;charset=utf8mb4
DB_DEFAULT_USER=app_user
DB_DEFAULT_PASS=change-me
DB_DEFAULT_TTL=0

DB_DEFAULT_OPTIONS_ERRMODE_EXCEPTION=true
DB_DEFAULT_OPTIONS_EMULATE_PREPARES=false
DB_DEFAULT_OPTIONS_DEFAULT_FETCH_ASSOC=true

Plusieurs connexions

DB_CONNECTIONS=default,analytics

DB_ANALYTICS_DSN=pgsql:host=10.0.0.12;port=5432;dbname=warehouse
DB_ANALYTICS_USER=etl_user
DB_ANALYTICS_PASS=super-secret
DB_ANALYTICS_TTL=3600

Utilisation

use DDJ\Database\Database;

$pdo = Database::getConnection();                // 'default'
$pdoAnalytics = Database::getConnection('analytics');

Options PDO par défaut

  • ERRMODE_EXCEPTION
  • EMULATE_PREPARES = false
  • DEFAULT_FETCH_MODE = FETCH_ASSOC

Surcharges via .env (true/false) :

DB_DEFAULT_OPTIONS_ERRMODE_EXCEPTION=true
DB_DEFAULT_OPTIONS_EMULATE_PREPARES=false
DB_DEFAULT_OPTIONS_DEFAULT_FETCH_ASSOC=true

Robustesse

  • Lazy connection (créée au premier getConnection()).
  • TTL optionnel (reconnexion périodique) : DB_<NAME>_TTL=3600 (0 = désactivé).
  • Ping auto (si la connexion tombe, nouvelle connexion au prochain appel).
  • Fermeture manuelle:
    Database::closeConnection('default');
    Database::closeAll();
  • Exception: DDJ\Database\ConnectionException (DSN masqué).

Licence

MIT