PHPackages                             cocoon-projet/config - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. cocoon-projet/config

ActiveLibrary

cocoon-projet/config
====================

Gestionnaire de configuration pour PHP 8+

0.4.0(1y ago)023MITPHPPHP ^8.0CI passing

Since Apr 27Pushed 1y agoCompare

[ Source](https://github.com/cocoon-projet/config)[ Packagist](https://packagist.org/packages/cocoon-projet/config)[ RSS](/packages/cocoon-projet-config/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (8)Versions (5)Used By (0)

[![codecov](https://camo.githubusercontent.com/7044541b9aa4b0f6f2d67906191e8dc79ce86d6ad7124846b434864dce78c18b/68747470733a2f2f636f6465636f762e696f2f67682f636f636f6f6e2d70726f6a65742f636f6e6669672f67726170682f62616467652e7376673f746f6b656e3d4b4d37593132375a374a)](https://codecov.io/gh/cocoon-projet/config) [![PHP Composer](https://github.com/cocoon-projet/config/actions/workflows/ci.yml/badge.svg)](https://github.com/cocoon-projet/config/actions/workflows/ci.yml)

Cocoon Config
=============

[](#cocoon-config)

Une bibliothèque PHP 8+ moderne et flexible pour la gestion de configuration avec support des variables d'environnement.

Fonctionnalités
---------------

[](#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
------------

[](#installation)

```
composer require cocoon-projet/config
```

Configuration
-------------

[](#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', ''),
    ]
];
```

3. 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

[](#gestion-des-environnements)

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

```
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 :

1. **Fichiers spécifiques à l'environnement** :

    - 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** :

    - 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** :

    ```
    // 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** :

    - 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
-----------

[](#utilisation)

### Chargement des variables d'environnement

[](#chargement-des-variables-denvironnement)

```
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

[](#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

[](#gestion-du-cache)

La bibliothèque propose deux systèmes de cache complémentaires :

#### 1. Cache de configuration (ConfigurationCache)

[](#1-cache-de-configuration-configurationcache)

Optimisé pour la gestion des fichiers de configuration en production :

```
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)

[](#2-cache-générique-genericfilecache)

Pour un cache plus flexible et générique :

```
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

[](#variables-denvironnement)

```
// 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
----------------

[](#bonnes-pratiques)

1. **Organisation des fichiers**

    - 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**

    - 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é**

    - Ne jamais commiter le fichier `.env`
    - Utiliser des valeurs sécurisées en production
    - Valider les entrées utilisateur
4. **En production**

    - Utilisez `ConfigurationCache` pour les performances optimales
    - Activez le cache en production uniquement
    - Videz le cache lors des déploiements
5. **En développement**

    - Désactivez le cache pour voir les changements en temps réel
    - Utilisez `GenericFileCache` pour des tests de performance
6. **Sécurité**

    - Définissez les bonnes permissions sur le dossier
    - Ne stockez pas d'informations sensibles dans le cache

### Validation des données

[](#validation-des-données)

La bibliothèque offre des méthodes de validation de type :

```
// 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
-------

[](#licence)

MIT License - voir le fichier [LICENSE](LICENSE) pour plus de détails.

###  Health Score

33

—

LowBetter than 75% of packages

Maintenance47

Moderate activity, may be stable

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~846 days

Total

4

Last Release

396d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/5b019cffcdf77ab35448666ea712d4263ae3afd4bc0110de6a267936e3dba08d?d=identicon)[cocoon-projet](/maintainers/cocoon-projet)

---

Top Contributors

[![cocoon-projet](https://avatars.githubusercontent.com/u/28481301?v=4)](https://github.com/cocoon-projet "cocoon-projet (20 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/cocoon-projet-config/health.svg)

```
[![Health](https://phpackages.com/badges/cocoon-projet-config/health.svg)](https://phpackages.com/packages/cocoon-projet-config)
```

###  Alternatives

[laravel/framework

The Laravel Framework.

34.6k509.9M17.0k](/packages/laravel-framework)[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k36.7M256](/packages/laravel-dusk)[tightenco/jigsaw

Simple static sites with Laravel's Blade.

2.2k438.5k29](/packages/tightenco-jigsaw)[laravel-zero/framework

The Laravel Zero Framework.

3371.4M368](/packages/laravel-zero-framework)[ec-cube/ec-cube

EC-CUBE EC open platform.

78527.0k1](/packages/ec-cube-ec-cube)[phlak/directory-lister

PHP directory lister

2.5k1.4k](/packages/phlak-directory-lister)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
