Configuración y ajustes
Cómo Nibiru carga la configuración desde archivos INI específicos del entorno.
La capa de configuración de Nibiru está intencionalmente sencilla: analiza un solo archivo settings.<env>.ini al arrancar, lo expone a través de un singleton y permite que los módulos agreguen sus propios INIs a través del Registro.
Selección del entorno
Sección titulada «Selección del entorno»La variable de entorno APPLICATION_ENV selecciona qué archivo cargar:
APPLICATION_ENV | Archivo cargado |
|---|---|
development (por defecto) | application/settings/config/settings.development.ini |
staging | application/settings/config/settings.staging.ini |
production | application/settings/config/settings.production.ini |
export APPLICATION_ENV=production./nibiru -mi productionSi APPLICATION_ENV no está establecido, Nibiru predetermina a desarrollo.
Secciones
Sección titulada «Secciones»Un archivo típico settings.<env>.ini:
[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"Leyendo la configuración
Sección titulada «Leyendo la configuración»$cfg = \Nibiru\Config::getInstance()->getConfig();$cfg['DATABASE']['driver']; / 'pdo'$cfg['SETTINGS']['page.url']; / 'https://my-app.local'Para configuraciones profundamente anidadas, utilice las constantes tipadas de la interfaz View:
$cfg[\Nibiru\View::NIBIRU_SETTINGS]['smarty.css']; / ['/public/css/app.css']Configuraciones del módulo
Sección titulada «Configuraciones del módulo»Cada módulo bajo application/module/<nombre>/settings/ puede llevar sus propios archivos INI. El Registro los detecta automáticamente y los expone a través de:
$users = \Nibiru\Registry::getInstance()->loadModuleConfigByName('users');$users->session_lifetime; / from [USERS] section in users.iniEl Registro prefiere <módulo>.<entorno>.ini sobre <módulo>.ini, por lo que obtienes anulaciones por entorno de forma gratuita.
Secretos
Sección titulada «Secretos»Los archivos INI son texto plano. Dos opciones seguras para producción:
A. Capa de entorno
Sección titulada «A. Capa de entorno»Mantén settings.production.ini en el control de versiones con marcadores de posición e inyecta valores reales desde las variables de entorno en tiempo de ejecución:
[DATABASE]password = "${DB_PASSWORD}"Luego expándelos en tu contenedor/CI:
envsubst < settings.production.ini.tpl > settings.production.iniB. Configuración fuera del árbol
Sección titulada «B. Configuración fuera del árbol»Mantén settings.production.ini fuera del repositorio y crea un enlace simbólico al momento de la implementación:
ln -s /etc/nibiru/settings.production.ini \ application/settings/config/settings.production.iniEl marco no se preocupa por dónde vive el archivo siempre y cuando parse_ini_file pueda leerlo.
Semántica de recarga
Sección titulada «Semántica de recarga»La configuración se lee una vez al arrancar, en el Settings estático. Los cambios en el INI requieren un ciclo de solicitud para que surtan efecto (o para scripts de larga ejecución, una llamada explícita a Settings::setConfig(\Nibiru\Config::getEnv())).
Trucos comunes
Sección titulada «Trucos comunes»- Ruta que lleva
/../../. Las rutas INI del framework son relativas al directorio del framework. Deben comenzar con/../../para escapar hasta la raíz de su proyecto. Sí, esto parece extraño; sí, funciona. - Análisis booleano.
parse_ini_filees permisivo —true,on,1todos se convierten en1;false,off,0,""se convierten en0. Usa cadenas de tres comillas si realmente necesitas un literal"true". - Valores de array. Usa la sintaxis
[](smarty.css[] = …) — Nibiru depende de que estos sean arrays.