Aller au contenu principal
Version: 0.7.3

Config

L'attribut Config permet de charger et d'utiliser facilement des fichiers de configuration YAML dans vos contrôleurs, en suivant la convention de configuration d'Elementum.

Utilisation de base

app/Controllers/MyController.php
use Elementum\Attributes\Config;

class MyController extends Controller
{
    #[Config('media')]
    public function configureMedia($config)
    {
        // $config contient les données du fichier config/media.yaml
        // Exemple d'utilisation avec les types MIME
        $mime_types = [];

        foreach ($config['supports'] ?? [] as $mime) {
            if (empty($mime)) continue;

            $mime_types[$mime] = match($mime) {
                'svg' => 'image/svg+xml',
                'avif' => 'image/avif',
                default => "image/{$mime}",
            };
        }

        if (!empty($mime_types)) {
            add_filter('upload_mimes', fn($mimes) => array_merge($mimes, $mime_types));
        }
    }
}

Structure du fichier de configuration

Les fichiers de configuration doivent être placés dans le dossier config de votre thème ou plugin et utiliser l'extension .yaml :

config/media.yaml
supports:
    - svg
    - avif
    - webp

Paramètres

Paramètre obligatoire

configFile Requis

  • Type : string
  • Description : Nom du fichier de configuration (sans l'extension .yaml) situé dans le dossier config
  • Exemple : 'media' pour charger config/media.yaml

Paramètres optionnels

key

  • Type : string|null
  • Défaut : null
  • Description : Identifiant unique optionnel pour référencer cette configuration
  • Exemple : 'media_support' pour un identifiant unique

merge

  • Type : boolean
  • Défaut : true
  • Description : Si true, fusionne la configuration avec les valeurs existantes. Si false, écrase la configuration existante.

Exemples avancés

Accès à une clé spécifique

#[Config('media', key: 'supports')]
public function configureMimeTypes($supportedTypes)
{
    // $supportedTypes contient directement le tableau ['svg', 'avif', 'webp']
    // ...
}

Désactivation de la fusion

#[Config('app', merge: false)]
public function configureApp($config)
{
    // Écrase complètement la configuration existante
    // ...
}

Bonnes pratiques

  • Organisation : Gardez vos fichiers de configuration organisés par domaine fonctionnel
  • Documentation : Commentez vos fichiers de configuration pour expliquer les options disponibles
  • Validation : Validez toujours les données de configuration avant utilisation
  • Sécurité : Ne stockez jamais d'informations sensibles dans les fichiers de configuration