Есть ли способ использовать PHP-ActiveRecord как слой ORM / абстракции Symfony?

StackOverflow https://stackoverflow.com/questions/3756014

Вопрос

Я только что обнаружил PHP-ActiveReCord не слишком давно после того, как бороться почти месяц, чтобы написать свой собственный ORM (мне сложно, подобное), и я влюбился в это. Я посмотрел на доктрину и продвинул раньше, но решил убежать из-за прозрачной сложности и кривой обучения. С AR, у меня нет беспокойства и трудностей у меня было с другими.

Вскоре после этого я также обнаружил Symfony Framework (я также пытался сделать свои собственные рамки от Sharch после поиска других рамки чрезмерно раздутые). Тем не менее, у меня есть одна проблема: структура Symfony с использованием доктрины и профтеров в качестве слоя ORM / абстракции из коробки без какой-либо документации о том, как ее изменить.

Я еще не использовал Symfony, я читал книгу «Нежное введение». Слой ORM / абстракции кажется несколько удален из ядра Symfony и кажется достаточно легко, чтобы преобразовать все. Вопрос в том, это?

У кого-нибудь есть какой-то опыт, использующий ActiveRecord с Symfony или, даже, используя все, что иное, как доктрина / продвижение с Symfony?

Это было полезно?

Решение

Я бы связывал код ActiveRecord как плагин Symfony. Вы можете узнать больше о создании плагинов Symfony здесь. Отказ Основы были бы:

  • Создать plugins/sfActiveRecordPlugin папка. Поместите активный код записи в plugins/sfActiveRecordPlugin/lib/vendor.
  • Поместите любую загрузку Activerecord внутри sfActiveRecordPlugin/config/config.php. Отказ Этот код будет выполнен каждый раз, когда проектная конфискация создается. Если ActiveReCord имеет свой автозагрузчик, вам, вероятно, понадобится решить это здесь. Вам также может потребоваться установить Symfony, чтобы игнорировать классы Activerecord, это сделано через autoload.yml.
  • Включите ваш плагин в вашем ProjectConfiguration сорт:

    class ProjectConfiguration extends sfProjectConfiguration
    {
      public function setup()
      {
        $this->enablePlugins(array(
          'sfActiveRecordPlugin',
        ));
      }
    }
    

    Вызов включения плагинов отключит какие-либо плагины, а не явно включенные. Вы также можете назвать DisablePlugins с плагинами, которые вы не хотите загружаться, если вы предпочитаете.

Это должно быть большую часть работы.

Наконец, я бы призываю вас дать доктрину еще один выстрел. Доктрина - очень мощная ORM, и IMO - лучший там. Кроме того, Symfony приходит с большим количеством конкретных учетов доктрины, которые вы собираетесь в конечном итоге переписать хотя бы некоторые из них.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top