Задать вопрос

Как создать проект на Symfony2 с конфигами на PHP, а не на YAML?

Здравствуйте! Подскажите, пожалуйста, как создать новый проект так, что бы все конфиги в app/config/* были *.php файлами, а не *.yaml?
  • Вопрос задан
  • 301 просмотр
Подписаться 1 Оценить 1 комментарий
Решения вопроса 1
@unity_ultra_hardcore
В бандле у вас есть файл DependencyInjection/AcmeAppExtension.php.
Если его содержимое привести примерно к такому виду, то должно получиться (правда сам я не пробовал этим заниматься).
<?php

namespace Acme\AppBundle\DependencyInjection;

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;

/**
 * This is the class that loads and manages your bundle configuration.
 *
 * To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html}
 * @codeCoverageIgnore
 */

class AcmeAppExtension extends Extension
{
    /**
     * {@inheritdoc}
     */
    public function load(array $configs, ContainerBuilder $container)
    {
        $configuration = new Configuration();
        $this->processConfiguration($configuration, $configs);

        $loader = new Loader\PhpFileLoader($container, new FileLocator(__DIR__ . '/../config/'));
        $loader->load('services.php');

        if ($container->getParameter('kernel.environment') == 'dev') {
            $loader->load('services_dev.php');
        }

        if ($container->getParameter('kernel.environment') == 'test') {
            $loader->load('services_test.php');
        }
    }
}

P.S. я лично тоже считаю, что это большая глупость - отказываться от yml в пользу php-конфигов: это нарушает основной принцип конфигурации - ее детерминированность. В php-конфиге можно наворотить какой-то логики при вычислении того или иного параметра, что отрицательно скажется на удобстве поддержки проекта.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
sayber
@sayber
Да, я программирую на PHP и еще асинхронно!
Вероятно указать в параметрах php (как при создании бандла).
Хотя не могу себе представить причины, создавать php конфиги.
Ответ написан
@shagguboy
заменить по вкусу:
public function registerContainerConfiguration(LoaderInterface $loader)
{
$loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml');
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы