Aller au contenu principal
Version: Canary đźš§

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
config/app.php
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 :

.env.json
{
"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"
}
Sécurité

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​

.env.json
{
"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​

.env.json
{
"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 :

.env
APP_NAME="Mon Application"
APP_ENV=development
APP_DEBUG=true

DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=app_db

Fichiers de configuration​

FichierDescription
app.phpConfiguration générale (nom, timezone, chemins, debug)
database.phpConnexions base de données
cache.phpConfiguration du cache
session.phpSessions (driver, durée, cookies)
storage.phpStockage de fichiers
mail.phpConfiguration email
view.phpMoteur de templates
queue.phpFile d'attente
auth.phpAuthentification
security.phpCORS, headers de sécurité
translate.phpInternationalisation

Configuration app.php​

config/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 :

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), '-'));
}
}
Documentation

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.