nilsframework / nils-config
Package de gestion de configuration JSON pour NilsFramework
Requires
- php: >=8.1
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.
Utilisezconfig.example.jsoncomme 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 :
| Driver | Champs requis |
|---|---|
mysql / mariadb / postgresql | host + database non vides |
sqlite | database 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 :
| Situation | Message |
|---|---|
| Fichier introuvable | Fichier de configuration introuvable : /chemin/config.json |
| JSON invalide | JSON invalide dans le fichier de configuration : ... |
| Clé absente (sans défaut) | Clé de configuration introuvable : ma_cle |
| Section absente | Section de configuration introuvable : ma_section |
| Aucun driver DB valide | Aucune 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