nilsframework/nils-config

Package de gestion de configuration JSON pour NilsFramework

Maintainers

Package info

gitlab.com/groupe11512549/nils-config

Issues

pkg:composer/nilsframework/nils-config

Statistics

Installs: 10

Dependents: 1

Suggesters: 0

Stars: 0

1.0.0 2026-04-19 15:49 UTC

This package is not auto-updated.

Last update: 2026-04-20 08:37:57 UTC


README

Package de gestion de configuration JSON pour NilsFramework.
Charge et expose un fichier config.json via une API statique simple.

📋 Table des matiùres

Installation

composer require nilsframework/nils-config

Configuration

Créez un fichier Configuration/config.json à la racine de votre projet :

{
    "app_name": "Song-Taaba",
    "app_debug": true,
    "app_url": "http://localhost:8000",

    "mysql": {
        "driver": "mysql",
        "host": "127.0.0.1",
        "username": "root",
        "password": "secret",
        "database": "song_taaba"
    },
    "mariadb": {
        "driver": "mariadb",
        "host": "",
        "username": "",
        "password": "",
        "database": ""
    },
    "sqlite": {
        "driver": "sqlite",
        "database": ""
    },
    "postgresql": {
        "driver": "postgresql",
        "host": "",
        "username": "",
        "password": "",
        "database": ""
    }
}

⚠ Ne commitez jamais config.json — ajoutez-le Ă  votre .gitignore.
Utilisez config.example.json comme modÚle versionné.

Méthodes

charger()

Charge le fichier de configuration JSON.
AppelĂ©e automatiquement par toutes les autres mĂ©thodes — rarement nĂ©cessaire de l'appeler manuellement.

use Configuration\Config;

// Chargement explicite avec chemin personnalisé
Config::charger('Configuration/config.json');

// Chargement automatique implicite
Config::get('app_name'); // charger() est appelé automatiquement

Si la configuration est déjà chargée, un second appel est ignoré.

get()

Retourne la valeur d'une clé de premier niveau.

// Sans valeur par dĂ©faut — lĂšve une exception si la clĂ© est absente
$appName = Config::get('app_name');
// "Song-Taaba"

// Avec valeur par défaut
$debug = Config::get('app_debug', false);
// true

$url = Config::get('app_url', 'http://localhost:8000');
// "http://localhost:8000"

// LÚve RuntimeException si la clé est absente et pas de défaut
$jwt = Config::get('jwt_secret'); // ← RuntimeException

getSection()

Retourne une section entiĂšre du fichier de configuration sous forme de tableau.

$mysql = Config::getSection('mysql');
// [
//   'driver'   => 'mysql',
//   'host'     => '127.0.0.1',
//   'username' => 'root',
//   'password' => 'secret',
//   'database' => 'song_taaba',
// ]

$mailer = Config::getSection('mailer');
// [
//   'host' => 'smtp.example.com',
//   'port' => 587,
//   ...
// ]

getDatabaseConfig()

Retourne la configuration du driver de base de données actif.
Le driver actif est dĂ©tectĂ© automatiquement — c'est le premier bloc avec les champs obligatoires non vides.

$config = Config::getDatabaseConfig();
// [
//   'driver'   => 'mysql',
//   'host'     => '127.0.0.1',
//   'username' => 'root',
//   'password' => 'secret',
//   'database' => 'song_taaba',
// ]

RÚgles de détection :

DriverChamps requis
mysql / mariadb / postgresqlhost + database non vides
sqlitedatabase non vide

L'ordre de prioritĂ© est : mysql → mariadb → sqlite → postgresql.

has()

Vérifie si une clé existe dans la configuration sans lever d'exception.

if (Config::has('mailer')) {
    $mailer = Config::getSection('mailer');
}

if (!Config::has('jwt_secret')) {
    throw new \RuntimeException("JWT non configuré.");
}

all()

Retourne toutes les données de configuration sous forme de tableau.

$config = Config::all();
// [
//   'app_name'  => 'Song-Taaba',
//   'app_debug' => true,
//   'mysql'     => [...],
//   ...
// ]

// Afficher toutes les clés disponibles
echo implode(', ', array_keys(Config::all()));
// app_name, app_debug, app_url, mysql, sqlite, ...

cheminFichier()

Retourne le chemin absolu du fichier de configuration chargé.

$chemin = Config::cheminFichier();
// "/var/www/html/Configuration/config.json"

// Utile pour le débogage
echo "Config chargée depuis : " . Config::cheminFichier();

reinitialiser()

Réinitialise la configuration chargée.
Utile pour les tests unitaires ou pour recharger un fichier différent.

// Charger la config de test
Config::reinitialiser();
Config::charger('Configuration/config.test.json');

$db = Config::getDatabaseConfig();
// Retourne la config de test (SQLite par exemple)

// Restaurer aprĂšs le test
Config::reinitialiser();

Exceptions

Toutes les erreurs lĂšvent une \RuntimeException :

SituationMessage
Fichier introuvableFichier de configuration introuvable : /chemin/config.json
JSON invalideJSON invalide dans le fichier de configuration : ...
Clé absente (sans défaut)Clé de configuration introuvable : ma_cle
Section absenteSection de configuration introuvable : ma_section
Aucun driver DB valideAucune base de données valide trouvée dans la configuration.
use Configuration\Config;

try {
    $secret = Config::get('jwt_secret');
} catch (\RuntimeException $e) {
    echo $e->getMessage();
    // "Clé de configuration introuvable : jwt_secret"
}

Licence

MIT — © NilsFramework