Может ли YAML иметь наследство? - PullRequest
1 голос
/ 17 июня 2010

Этот вопрос включает в себя много Symfony, но это должно быть достаточно легко для того, чтобы следовать, кто знает только YAML, а не Symfony.

Мои модели Symfony происходят из трехэтапного процесса: во-первых, я создаютаблицы в MySQL.Во-вторых, я запускаю команду symfony (доктрина symfony: build-схема), чтобы преобразовать структуру моей таблицы в файл YAML.В-третьих, я запускаю другую команду symfony (доктрина symfony: build-model) для преобразования файла YAML в код PHP.

Вот проблема: в базе данных есть несколько таблиц, которые я не хочу заканчиватьв моем коде Symfony.Например, допустим, у меня есть две таблицы: одна называется my_table, а другая - wordpress.Файл YAML, который я получаю, может выглядеть так:

MyTable:
  connection: doctrine
  tableName: my_table
Wordpress:
  connection: doctrine
  tableName: wordpress

Это замечательно, за исключением того, что таблица wordpress не имеет ничего общего с моими моделями Symfony.В результате каждый раз, когда я изменяю свою базу данных и генерирую этот файл YAML, мне приходится вручную удалять wordpress.Это раздражает!

Я хотел бы иметь возможность создать файл с именем baseConfig.php или что-то похожее на это:

$config = array(
  'MyTable' => array(
    'connection' => 'doctrine',
    'tableName' => 'my_table',
  ),
  'Wordpress' => array(
    'connection' => 'doctrine',
    'tableName' => 'wordpress',
  ),
);

И тогда я мог бы иметь отдельный файл с именем config.php или что-то еще, где я мог бы внести изменения в базовую конфигурацию:

unset($config['Wordpress']);

Поэтому мой вопрос: есть ли способ конвертировать YAML в исполняемый код PHP (в отличие от загрузки кода YAML INTO PHP, какsfYaml :: load () делает), чтобы достичь такого рода вещей?Или, может быть, есть какой-то другой способ добиться наследования YAML?Спасибо, Джейсон

Ответы [ 2 ]

1 голос
/ 29 октября 2010

Правильный ответ (насколько я могу судить): нет.

Кстати, вот плагин, который я в итоге написал:

0 голосов
/ 17 июня 2010

Альтернативный подход:

Я не уверен, что Symphony позволит вам сделать это, но Doctrine поддерживает файлы схемы, созданные вручную .Вам нужно будет синхронизировать вещи вручную, но в зависимости от того, насколько сильно вы меняете таблицы, это может быть управляемым.

...