config/autoload/config.php
<?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 :
-
Mode Strict:
declare(strict_types=1);assure que PHP sera strict sur les types de données. -
Importation des Classes: Importe les classes nécessaires pour la configuration, y compris
ConfigAggregator,ArrayProvider, etPhpFileProvider. -
Configuration du Cache: Définit le chemin où le cache de configuration sera stocké.
-
Création de l'Agrégateur de Configuration: Crée un nouvel objet
ConfigAggregatoret 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. -
Gestion de la Configuration Swoole: Inclut une configuration conditionnelle pour Swoole, un serveur web asynchrone pour PHP, si elle est installée.
-
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.
-
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.