Comment utiliser un fichier de configuration YAML dans Silex Framework
est-il possible de configurer une Application Silex avec des fichiers de configuration YAML? Je parie que oui, mais comment est-il fait correctement? Par exemple je veux utiliser différentes configurations en fonction de l'environnement, comme config.dev.yml et de configuration.prod.yml.
le fichier de configuration doit contenir les paramètres de l'application elle-même et des extensions/services enregistrés.
Exemple:
// Debug flag should be set in the config file
$app['debug'] = true;
// Extension options should also be set in config file
$app->register(new SilexExtensionTwigExtension(), array(
'twig.path' => __DIR__.'/views',
'twig.class_path' => __DIR__.'/vendor/Twig/lib',
));
dois-je analyser moi-même le fichier YAML et régler les paramètres en conséquence? ou est-il plus "magique" de la façon de le faire?
3 réponses
tout d'abord, ajoutez le composant Symfony Yaml à votre compositeur.json
"symfony/yaml": "2.1.*@dev",
utilisez la bonne version en choisissant directement de la page packagist:https://packagist.org/packages/symfony/yaml
Maintenant, vous pouvez ajouter le deralex YamlConfigProvider, un fournisseur de Silex simple et utile. Ajouter à votre compositeur.json:
"deralex/yaml-config-service-provider": "1.0.x-dev"
Voici la page github officielle: https://github.com/deralex/YamlConfigServiceProvider
Ici le packagist page: https://packagist.org/packages/deralex/yaml-config-service-provider
UPDATE
installez les dépendances avec ./composer.phar update
commande et enfin, ajoutez ces lignes à votre application fichier:
$app = new Silex\Application();
$app->register(new DerAlex\Silex\YamlConfigServiceProvider(__DIR__ . '/settings.yml'));
Maintenant, par exemple, vous pouvez le faire ceci:
paramètres.yml
database:
driver: pdo_mysql
host: localhost
dbname: database_name
user: root
password: password
charset: utf8
index.php
$app->register(new Silex\Provider\DoctrineServiceProvider(), array(
'db.options' => $app['config']['database']
));
ce paquet dans la réponse ne fonctionne pas pour Silex 2.0 c'est pourquoi j'ai créé un paquet qui fonctionne pour Silex 2.0 et Symfony/Yaml 3.1. Peut-être que quelqu'un qui cherche cette réponse la trouvera utile
https://packagist.org/packages/rpodwika/yaml-config-service-provider
pour utiliser la commande exécuter
composer require rpodwika/yaml-config-service-provider
ou ajouter
"rpodwika/yaml-config-service-provider" : "dev-master"
pour votre compositeur.json
lien github https://github.com/rpodwika/yaml-config-service-provider
utilisation:
<?php
require_once __DIR__.'/../vendor/autoload.php';
$app = new Silex\Application();
$app->register(new Rpodwika\Silex\YamlConfigServiceProvider("settings.yml"));
echo $app['config']['database']['driver'];
L'extension Loadconfig décrite par @fbrandel (ci-dessus dans les commentaires) vous permet de partager le service de configuration du chargeur yml.