Configuration et paramètres
Comment Nibiru charge la configuration à partir des fichiers INI spécifiques à l'environnement.
La couche de configuration de Nibiru est intentionnellement simple : elle analyse un seul fichier settings.<env>.ini au démarrage, l’expose via un singleton, et laisse aux modules ajouter leurs propres INIs à travers le Registry.
Sélection d’environnement
Section intitulée « Sélection d’environnement »La variable d’environnement APPLICATION_ENV sélectionne le fichier à charger :
APPLICATION_ENV | Fichier chargé |
|---|---|
développement (par défaut) | application/settings/config/settings.development.ini |
pré-production | application/settings/config/settings.staging.ini |
production | application/settings/config/settings.production.ini |
export APPLICATION_ENV=production./nibiru -mi productionSi APPLICATION_ENV n’est pas défini, Nibiru par défaut à développement.
Sections
Section intitulée « Sections »Un fichier settings.<env>.ini typique :
[ENGINE]templates = "/../../application/view/templates/"templates_c = "/../../application/view/templates_c/"cache = "/../../application/view/cache/"config_dir = "/../../application/view/configs/"caching = falsedebug = trueerror.controller = "error"
[AUTOLOADER]iface.pos[] = "users"iface.pos[] = "cms"class.pos[] = "users"class.pos[] = "cms"
[SETTINGS]page.url = "https://my-app.local"navigation = "/../../application/settings/config/navigation/main.json"modules.path = "/../../application/module/"entries.per.page = 25smarty.css[] = "/public/css/app.css"smarty.js[] = "/public/js/app.js"timezone = "Europe/Vienna"
[DATABASE]driver = "pdo"hostname = "localhost"port = 3306username = "nibiru"password = "secret"basename = "nibiru_dev"encoding = "utf8mb4"is.active = true
[SECURITY]password_hash = "change-me-at-once"
[GENERATOR]database = truedatabase.overwrite = true
[EMAIL]host = "smtp.example.com"port = 587encryption = "tls"username = "noreply@example.com"password = "smtp-secret"from = "Nibiru <noreply@example.com>"
[NIBIRU_ROUTING]; optional regex routes — see /core/routing/
[NIBIRU_SECURITY]password_hash = "another-salt-for-AES_DECRYPT"Lecture des configurations
Section intitulée « Lecture des configurations »$cfg = \Nibiru\Config::getInstance()->getConfig();$cfg['DATABASE']['driver']; / 'pdo'$cfg['SETTINGS']['page.url']; / 'https://my-app.local'Pour les configurations profondément imbriquées, utilisez les constantes typées de l’interface View :
$cfg[\Nibiru\View::NIBIRU_SETTINGS]['smarty.css']; / ['/public/css/app.css']Configurations des modules
Section intitulée « Configurations des modules »Chaque module situé sous application/module/<nom>/settings/ peut posséder ses propres fichiers INI. Le Registre les détecte automatiquement et les expose via :
$users = \Nibiru\Registry::getInstance()->loadModuleConfigByName('users');$users->session_lifetime; / from [USERS] section in users.iniLe Registre préfère <module>.<env>.ini par rapport à <module>.ini, donc vous obtenez des remplacements par environnement gratuitement.
Les fichiers INI sont du texte brut. Deux options sûres pour la production :
A. Superposition d’environnement
Section intitulée « A. Superposition d’environnement »Gardez settings.production.ini dans le contrôle de version avec des espaces réservés, et injectez les valeurs réelles à partir des variables d’environnement au moment de l’exécution :
[DATABASE]password = "${DB_PASSWORD}"Puis développez-les dans votre conteneur/CI :
envsubst < settings.production.ini.tpl > settings.production.iniB. Configuration hors arbre
Section intitulée « B. Configuration hors arbre »Gardez settings.production.ini à l’extérieur du dépôt et créez un lien symbolique lors du déploiement :
ln -s /etc/nibiru/settings.production.ini \ application/settings/config/settings.production.iniLe framework n’importe pas où se trouve le fichier, du moment que parse_ini_file peut le lire.
Rechargement des sémantiques
Section intitulée « Rechargement des sémantiques »La configuration est lue une seule fois au démarrage, dans la variable statique Settings. Les modifications du fichier INI nécessitent un cycle de requête pour prendre effet (ou, pour les scripts à long terme, un appel explicite à Settings::setConfig(\Nibiru\Config::getEnv())).
Tracas courantes
Section intitulée « Tracas courantes »- Chemin menant
/../../. Les chemins INI du framework sont relatifs au répertoire du framework. Ils doivent commencer par/../../pour échapper à la racine de votre projet. Oui, cela semble bizarre ; oui, cela fonctionne. - Analyse booléenne.
parse_ini_fileest permissif —true,on,1deviennent tous1;false,off,0,""deviennent0. Utilisez des chaînes de trois guillemets si vous avez vraiment besoin d’une littérale"true". - Valeurs de tableau. Utilisez la syntaxe
[](smarty.css[] = …) — Nibiru repose sur le fait que ces éléments soient des tableaux.