ruiadr/config
最新稳定版本:4.1.0
Composer 安装命令:
composer require ruiadr/config
包简介
Gestionnaire de fichiers de configuration YAML.
README 文档
README
Gestionnaire de fichiers de configuration YAML.
⭐ Principe
Le module de configuration permet de gérer des fichiers de configuration YAML avec support de la hiérarchie d'environnements, du cache et de l'injection de variables d'environnement.
Le système utilise une hiérarchie basée sur une configuration de base (base) et des configurations spécifiques qui héritent et surchargent ces valeurs.
Exemple de fichier YAML
# Configuration de base (héritée par toutes les autres sections)
base:
host: "127.0.0.1"
port: 3306
dbname: "project_db_base"
credentials:
username: "root"
password: ""
env:
dev:
dbname: "project_db_dev"
credentials:
username: "dev"
password: "ENV:LOCAL_DEV_PASSWORD"
# Configuration spécifique pour server1
server1:
host: "123.321.123.1" # Surcharge l'host de base
env:
preprod:
dbname: "project_db_preprod"
credentials:
username: "preprod"
password: "ENV:SERVER1_PREPROD_PASSWORD"
prod:
dbname: "project_db_prod"
credentials:
username: "prod"
password: "ENV:SERVER1_PROD_PASSWORD"
Héritage et fusion
- Configuration de base : La section
basecontient les valeurs par défaut - Héritage : Chaque section hérite automatiquement de la configuration de base
- Surcharge : Les valeurs spécifiques surchargent celles de la base
- Environnements : Les sections
envpermettent de surcharger selon l'environnement
Gestion des environnements
Définition d'un environnement
// Sans environnement (utilise la configuration de base)
$config = new Config('config.yml');
// Avec environnement dev
$configDev = new Config('config.yml', 'dev');
// Avec environnement prod
$configProd = new Config('config.yml', 'prod');
Résolution des valeurs par environnement
Avec la configuration d'exemple :
// Configuration de base
$config = new Config('config.yml');
$dbname = $config->server1->dbname; // "project_db_base"
// Configuration dev
$configDev = new Config('config.yml', 'dev');
$dbname = $configDev->server1->dbname; // "project_db_dev"
// Configuration prod
$configProd = new Config('config.yml', 'prod');
$dbname = $configProd->server1->dbname; // "project_db_prod"
Variables d'environnement
Le système supporte l'injection de variables d'environnement via la syntaxe ENV:VARIABLE_NAME.
Utilisation
// En admettant la variable d'environnement "SERVER1_PROD_PASSWORD=secret123"
// du fichier yaml donné en exemple précédemment.
$config = new Config('config.yml', 'prod');
$password = $config->server1->credentials->password; // "secret123"
Système de cache
Le module supporte la mise en cache de la configuration pour améliorer les performances.
Cache Redis
use Ruiadr\Config\Config;
use Ruiadr\Config\ConfigCache;
use Ruiadr\Cache\RedisCache;
$configCache = new ConfigCache(new RedisCache());
$config = new Config('config.yml', 'prod', $configCache);
Cache fichier
use Ruiadr\Config\Config;
use Ruiadr\Config\ConfigCache;
use Ruiadr\Cache\FileCache;
$configCache = new ConfigCache(new FileCache('/path/to/cache'));
$config = new Config('config.yml', 'prod', $configCache);
Configuration du cache
use Ruiadr\Config\ConfigCache;
// Cache avec clé et TTL personnalisés
$configCache = new ConfigCache(
$cache, // Fichier ou Redis
'my_config_key', // Clé de cache personnalisée (défaut: config)
7200 // TTL de 2 heures (défaut: 86400 secondes)
);
⭐ Tests
Lancer les tests unitaires :
php vendor/bin/phpunit
Lancer les tests unitaires avec des statistiques de couverture du code :
La commande aura pour effet de générer un fichier coverage.xml qui pourra ensuite être utilisé par SonarCloud, et un répertoire coverage contenant le HTML permettant de consulter le compte rendu depuis son navigateur.
php vendor/bin/phpunit --log-junit=tests.xml --coverage-clover=coverage.xml --coverage-html coverage
xdebug doit être installé et activé. Exemple avec un conteneur Docker :
# /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
zend_extension=xdebug.so
[xdebug]
xdebug.mode=coverage
统计信息
- 总下载量: 56
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-06-29