<?php

declare(strict_types=1);
// Active le mode strict pour les types en PHP

use Laminas\ConfigAggregator\ArrayProvider;
use Laminas\ConfigAggregator\ConfigAggregator;
use Laminas\ConfigAggregator\PhpFileProvider;
use Mezzio\Helper\ConfigProvider;
// Importe les classes nécessaires pour la configuration

// Configuration du cache
$cacheConfig = [
    'config_cache_path' => 'data/cache/config-cache.php',
];
// Définit le chemin du cache de configuration

// Création de l'agrégateur de configuration
$aggregator = new ConfigAggregator([
    // Liste des fournisseurs de configuration
    \Mezzio\Tooling\ConfigProvider::class,
    \Mezzio\Helper\ConfigProvider::class,
    \Mezzio\Router\FastRouteRouter\ConfigProvider::class,
    \Laminas\HttpHandlerRunner\ConfigProvider::class,
    \Laminas\Db\ConfigProvider::class,
    // Inclut la configuration du cache
    new ArrayProvider($cacheConfig),
    ConfigProvider::class,
    \Mezzio\ConfigProvider::class,
    \Mezzio\Router\ConfigProvider::class,
    \Laminas\Diactoros\ConfigProvider::class,

    // Configuration Swoole pour écraser certains services (si installé)
    class_exists(\Mezzio\Swoole\ConfigProvider::class)
        ? \Mezzio\Swoole\ConfigProvider::class
        : function (): array {
            return [];
        },

    // Configuration du module App par défaut
    App\ConfigProvider::class,

    // Charge la configuration de l'application dans un ordre prédéfini
    new PhpFileProvider(realpath(__DIR__) . '/autoload/{{,*.}global,{,*.}local}.php'),

    // Charge la configuration de développement si elle existe
    new PhpFileProvider(realpath(__DIR__) . '/development.config.php'),
], $cacheConfig['config_cache_path']);
// Crée un agrégateur avec la liste des fournisseurs de configuration et le chemin du cache

return $aggregator->getMergedConfig();
// Retourne la configuration agrégée

Ce script fait plusieurs choses importantes :

  1. Mode Strict: declare(strict_types=1); assure que PHP sera strict sur les types de données.

  2. Importation des Classes: Importe les classes nécessaires pour la configuration, y compris ConfigAggregator, ArrayProvider, et PhpFileProvider.

  3. Configuration du Cache: Définit le chemin où le cache de configuration sera stocké.

  4. Création de l'Agrégateur de Configuration: Crée un nouvel objet ConfigAggregator et lui passe une liste de fournisseurs de configuration. Ces fournisseurs incluent des configurations spécifiques à Mezzio, Laminas, et d'autres bibliothèques, ainsi que des configurations spécifiques à l'application.

  5. Gestion de la Configuration Swoole: Inclut une configuration conditionnelle pour Swoole, un serveur web asynchrone pour PHP, si elle est installée.

  6. Chargement de la Configuration de l'Application: Charge la configuration de l'application à partir de fichiers spécifiques, en respectant un ordre qui permet aux paramètres locaux d'écraser les paramètres globaux.

  7. Retour de la Configuration Agrégée: Le script retourne finalement la configuration agrégée, qui est utilisée par l'application.

Ce fichier est essentiel pour centraliser et organiser la configuration de l'application, en permettant de charger et de fusionner des configurations à partir de multiples sources et formats.

 

Modifié le: jeudi 18 janvier 2024, 10:31