2017 © Pedro PelĂĄez
 

library config

Lit les valeurs de multiple fichiers de configuration

image

cocoon-projet/config

Lit les valeurs de multiple fichiers de configuration

  • Friday, April 27, 2018
  • by cocoon-projet
  • Repository
  • 0 Watchers
  • 0 Stars
  • 4 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 2 Versions
  • 33 % Grown

The README.md

codecov PHP Composer, (*1)

Cocoon Config

Une bibliothĂšque PHP 8+ moderne et flexible pour la gestion de configuration avec support des variables d'environnement., (*2)

Fonctionnalités

  • ✹ Support PHP 8.0+
  • 🔄 Gestion multi-environnements (development, production, testing)
  • 🌍 Variables d'environnement avec la fonction helper env()
  • 📩 Chargement automatique des fichiers de configuration
  • 🔒 Validation des types et des valeurs

Installation

composer require cocoon-projet/config

Configuration

  1. Créez un dossier config à la racine de votre projet
  2. Ajoutez vos fichiers de configuration PHP :
// config/database.php
return [
    'default' => 'mysql',
    'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', 'localhost'),
        'port' => env('DB_PORT', 3306),
        'database' => env('DB_NAME', 'database'),
        'username' => env('DB_USER', 'root'),
        'password' => env('DB_PASSWORD', ''),
    ]
];
  1. Créez un fichier .env à la racine :
APP_ENV=development
DB_HOST=localhost
DB_PORT=3306
DB_NAME=my_database
DB_USER=root
DB_PASSWORD=secret

Gestion des environnements

La librairie supporte nativement la gestion de différents environnements (development, production, testing) via une convention de nommage des fichiers :, (*3)

config/
├── database.php           # Configuration par dĂ©faut
├── database.production.php # Configuration spĂ©cifique Ă  la production
├── database.development.php # Configuration spĂ©cifique au dĂ©veloppement
└── database.testing.php   # Configuration spĂ©cifique aux tests

Le systĂšme fonctionne de la maniĂšre suivante :, (*4)

  1. Fichiers spécifiques à l'environnement :, (*5)

    • Format : nom.environnement.php (ex: database.production.php)
    • Ces fichiers sont chargĂ©s uniquement pour l'environnement correspondant
    • Ils Ă©crasent les valeurs du fichier de configuration par dĂ©faut
  2. Fichiers de configuration par défaut :, (*6)

    • Format : nom.php (ex: database.php)
    • Servent de configuration de base
    • Sont utilisĂ©s si aucun fichier spĂ©cifique Ă  l'environnement n'existe
  3. Exemple de chargement :, (*7)

    // En environnement production
    $config = ConfigFactory::fromDirectory(__DIR__ . '/config');
    $dbHost = $config->get('database.mysql.host'); // Valeur de database.production.php ou database.php
    
  4. Priorité de chargement :, (*8)

    • Le fichier spĂ©cifique Ă  l'environnement est chargĂ© en prioritĂ©
    • Si non trouvĂ©, le fichier par dĂ©faut est utilisĂ©
    • Les valeurs sont fusionnĂ©es de maniĂšre rĂ©cursive

Utilisation

Chargement des variables d'environnement

use Cocoon\Config\Environment\EnvironmentVariables;

// Charger depuis un fichier .env (indiquer le repertoire) 
EnvironmentVariables::load(__DIR__);

// Ou charger manuellement
EnvironmentVariables::set('APP_ENV', 'development');
// ou
env('APP_ENV', 'development');
EnvironmentVariables::set('DB_HOST', 'localhost');
// ou
env('DB_HOST', 'localhost');

Chargement de la configuration .env et fichier de configuration

use Cocoon\Config\Factory\ConfigFactory;
use Cocoon\Config\Environment\Environment;

// Charger depuis un fichier .env (indiquer le repertoire) 
EnvironmentVariables::load(__DIR__);

// Initialiser l'environnement
Environment::init(EnvironmentVariables::get('APP_ENV', 'development'));

// Charger la configuration
$config = ConfigFactory::fromDirectory(__DIR__ . '/config');

// Accéder aux valeurs
$dbHost = $config->get('database.mysql.host');

// Vous pouvez aussi créer une configuration directement à partir d'un tableau
$config = ConfigFactory::fromArray([
    'app' => [
        'url' => 'http://www.monsite.com',
        'debug' => true,
        'timezone' => 'Europe/Paris'
    ],
    'database' => [
        'host' => 'localhost',
        'name' => 'ma_base',
        'user' => 'utilisateur'
    ]
]);

Gestion du cache

La bibliothÚque propose deux systÚmes de cache complémentaires :, (*9)

1. Cache de configuration (ConfigurationCache)

Optimisé pour la gestion des fichiers de configuration en production :, (*10)

use Cocoon\Config\Cache\ConfigurationCache;

// Vérifier si le cache est valide
if (ConfigurationCache::isFresh($configDir)) {
    $config = ConfigurationCache::load();
} else {
    $config = ConfigFactory::fromDirectory($configDir);
    ConfigurationCache::save($config->all());
}

// Vider le cache si nécessaire
ConfigurationCache::clear();

2. Cache générique (GenericFileCache)

Pour un cache plus flexible et générique :, (*11)

use Cocoon\Config\Cache\GenericFileCache;
use Cocoon\Config\Factory\ConfigFactory;
use Cocoon\Config\Config;

// Initialiser le cache
$cache = new GenericFileCache(__DIR__ . '/cache');

// Utiliser le cache avec la factory
$config = ConfigFactory::fromDirectory(__DIR__ . '/config', $cache);

// Créer une configuration manuellement
$config = new Config([
    'app' => [
        'url' => 'http://www.monsite.com',
        'debug' => true
    ]
]);

// Opérations de cache manuelles
$cache->set('ma_cle', $valeur);
$valeur = $cache->get('ma_cle');
$cache->delete('ma_cle');
$cache->clear();

Variables d'environnement

// Récupérer une variable d'environnement
$dbHost = env('DB_HOST', 'localhost');

// Vérifier l'existence d'une variable
if (env('DEBUG', false)) {
    // ...
}

Bonnes pratiques

  1. Organisation des fichiers, (*12)

    • Un fichier par domaine (database.php, mail.php, etc.)
    • Utilisation de sous-tableaux pour organiser les configurations
    • Documentation des options dans les commentaires
  2. Variables d'environnement, (*13)

    • Toujours fournir des valeurs par dĂ©faut
    • Utiliser des noms explicites et cohĂ©rents
    • Documenter les variables requises
    • Ne jamais commiter le fichier .env
    • CrĂ©er un fichier .env.example pour documenter les variables nĂ©cessaires
  3. Sécurité, (*14)

    • Ne jamais commiter le fichier .env
    • Utiliser des valeurs sĂ©curisĂ©es en production
    • Valider les entrĂ©es utilisateur
  4. En production, (*15)

    • Utilisez ConfigurationCache pour les performances optimales
    • Activez le cache en production uniquement
    • Videz le cache lors des dĂ©ploiements
  5. En développement, (*16)

    • DĂ©sactivez le cache pour voir les changements en temps rĂ©el
    • Utilisez GenericFileCache pour des tests de performance
  6. Sécurité, (*17)

    • DĂ©finissez les bonnes permissions sur le dossier
    • Ne stockez pas d'informations sensibles dans le cache

Validation des données

La bibliothÚque offre des méthodes de validation de type :, (*18)

// Vérifier l'existence d'une clé
if ($config->has('app.url')) {
    $url = $config->get('app.url');
}

// Obtenir une valeur avec une valeur par défaut
$timeout = $config->get('app.timeout', 30);

// Validation des types
if ($config->isString('app.url')) {
    // Traitement des chaĂźnes
}

if ($config->isInt('app.port')) {
    // Traitement des entiers
}

if ($config->isBool('app.debug')) {
    // Traitement des booléens
}

if ($config->isArray('database.mysql')) {
    // Traitement des tableaux
}

Licence

MIT License - voir le fichier LICENSE pour plus de détails., (*19)

The Versions

27/04 2018

dev-master

9999999-dev https://github.com/cocoon-projet/config/blob/master/docs/README.md

Lit les valeurs de multiple fichiers de configuration

  Sources   Download

MIT

The Requires

 

The Development Requires

file configuration config files

27/04 2018

0.1.0

0.1.0.0 https://github.com/cocoon-projet/config/blob/master/docs/README.md

Lit les valeurs de multiple fichiers de configuration

  Sources   Download

MIT

The Requires

 

The Development Requires

file configuration config files