Configuration
Introduction​
Tous les fichiers de configuration de Bow Framework sont centralisés dans le dossier config/. Chaque fichier est documenté pour faciliter la personnalisation.
Accéder à la configuration​
Récupérer une valeur​
// Récupérer une valeur
$appName = config('app.name');
// Avec une valeur par défaut
$timezone = config('app.timezone', 'UTC');
// Récupérer tout un fichier
$appConfig = config('app');
Modifier une valeur​
config('view.engine', 'twig');
config('view.extension', '.twig');
Notation à point​
La notation Ă point navigue dans les fichiers de configuration :
- Premier segment = nom du fichier
- Segments suivants = clés imbriquées
return [
'name' => 'Mon Application',
'settings' => [
'debug' => true,
'cache' => [
'driver' => 'file',
'ttl' => 3600
]
]
];
config('app.name'); // "Mon Application"
config('app.settings.debug'); // true
config('app.settings.cache.driver'); // "file"
config('app.settings.cache.ttl'); // 3600
Variables d'environnement​
Fichier .env.json​
Bow utilise .env.json pour les paramètres sensibles et variables selon l'environnement :
{
"APP_NAME": "Mon Application",
"APP_ENV": "development",
"APP_DEBUG": true,
"DB_CONNECTION": "mysql",
"DB_HOST": "localhost",
"DB_PORT": 3306,
"DB_DATABASE": "app_db",
"DB_USERNAME": "root",
"DB_PASSWORD": "secret",
"MAIL_HOST": "smtp.example.com",
"MAIL_PORT": 587,
"MAIL_USERNAME": "user@example.com",
"MAIL_PASSWORD": "password"
}
Ajoutez .env.json dans .gitignore pour ne jamais versionner vos secrets. Créez un .env.example.json comme modèle.
Récupérer les variables​
// Récupérer une variable
$dbHost = app_env('DB_HOST');
// Avec une valeur par défaut
$dbHost = app_env('DB_HOST', 'localhost');
Valeurs imbriquées​
{
"SERVICES": {
"STRIPE": {
"KEY": "pk_test_xxx",
"SECRET": "sk_test_xxx"
},
"PAYPAL": {
"CLIENT_ID": "xxx",
"SECRET": "xxx"
}
}
}
$stripeKey = app_env('SERVICES.STRIPE.KEY');
$paypalId = app_env('SERVICES.PAYPAL.CLIENT_ID');
Réutiliser des variables​
{
"BASE_URL": "https://api.example.com",
"WEBHOOKS": {
"PAYMENT": "${BASE_URL}/webhooks/payment",
"ORDER": "${BASE_URL}/webhooks/order"
}
}
app_env('WEBHOOKS.PAYMENT');
// https://api.example.com/webhooks/payment
Format .env classique​
Bow supporte aussi le format .env traditionnel :
APP_NAME="Mon Application"
APP_ENV=development
APP_DEBUG=true
DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=app_db
Fichiers de configuration​
| Fichier | Description |
|---|---|
app.php | Configuration générale (nom, timezone, chemins, debug) |
database.php | Connexions base de données |
cache.php | Configuration du cache |
session.php | Sessions (driver, durée, cookies) |
storage.php | Stockage de fichiers |
mail.php | Configuration email |
view.php | Moteur de templates |
queue.php | File d'attente |
auth.php | Authentification |
security.php | CORS, headers de sécurité |
translate.php | Internationalisation |
Configuration app.php​
return [
// Nom de l'application
'name' => app_env('APP_NAME', 'Bow Application'),
// Protection CSRF automatique
'auto_csrf' => (bool) app_env('APP_AUTO_CSRF', true),
// Préfixe d'URL (ex: '/api')
'root' => app_env('APP_URI_PREFIX', ''),
// Fuseau horaire
'timezone' => 'Africa/Abidjan',
// Chemins
'env_file' => realpath(__DIR__ . '/../.env.json'),
'frontend_path' => dirname(__DIR__) . '/assets',
'seeder_path' => dirname(__DIR__) . '/seeders',
'public_path' => dirname(__DIR__) . '/public',
'storage_path' => dirname(__DIR__) . '/var/storage',
// Mode debug: development | production
'debug' => app_env('APP_ENV', 'development'),
// Gestionnaire d'erreurs personnalisé
'error_handle' => \App\Exceptions\ErrorHandle::class,
// Afficher les traces d'erreur en JSON
'error_trace' => true,
];
Helpers personnalisés​
Ajoutez vos fonctions personnalisées dans config/helpers.php :
<?php
if (!function_exists('format_price')) {
function format_price(float $price, string $currency = '€'): string
{
return number_format($price, 2, ',', ' ') . ' ' . $currency;
}
}
if (!function_exists('slugify')) {
function slugify(string $text): string
{
return strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', $text), '-'));
}
}
Consultez la documentation des helpers pour toutes les fonctions disponibles.
Il manque quelque chose ?
Si vous rencontrez des problèmes avec la documentation ou si vous avez des suggestions pour améliorer la documentation ou le projet en général, veuillez déposer une issue pour nous, ou envoyer un tweet mentionnant le compte Twitter @bowframework ou sur directement sur le github.