Есть ли способ использовать PHP-ActiveRecord как слой ORM / абстракции Symfony?
-
04-10-2019 - |
Вопрос
Я только что обнаружил 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 приходит с большим количеством конкретных учетов доктрины, которые вы собираетесь в конечном итоге переписать хотя бы некоторые из них.