承接 ruiadr/config 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

ruiadr/config

最新稳定版本:4.1.0

Composer 安装命令:

composer require ruiadr/config

包简介

Gestionnaire de fichiers de configuration YAML.

README 文档

README

pipeline status

Quality Gate Status Coverage

Reliability Rating Security Rating Maintainability Rating

Technical Debt Vulnerabilities

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

  1. Configuration de base : La section base contient les valeurs par défaut
  2. Héritage : Chaque section hérite automatiquement de la configuration de base
  3. Surcharge : Les valeurs spécifiques surchargent celles de la base
  4. Environnements : Les sections env permettent 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

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-06-29