Я много раз говорил, что использование Active Record (или ORM, которая почти такая же) в качестве бизнес-моделей не является хорошей идеей. Позвольте мне объяснить:
Тот факт, что PHP является открытым исходным кодом, свободен (и вся эта длинная история ...), предоставляет ему огромное сообщество разработчиков, разливающих код на форумы, такие сайты, как GitHub, код Google и так далее. Вы можете считать это хорошей вещью, но иногда это не так хорошо. Например, предположим, что вы сталкиваетесь с проектом и хотите использовать среду ORM для решения вашей проблемы, написанной на PHP, ну ... у вас будет много вариантов на :
- Учение
- Propel
- QCodo
- оцепенения
- RedBean
И этот список можно продолжать и продолжать. Новые проекты создаются регулярно. Итак, представьте, что вы создали полноценный фреймворк и даже генератор исходного кода на основе этого фреймворка. Но вы не размещали бизнес-классы, потому что, в конце концов, «зачем писать те же классы снова?». Время идет, и новая платформа ORM выпущена, и вы хотите переключиться на новую ORM, но вам придется модифицировать почти каждое клиентское приложение, используя прямую ссылку на вашу модель данных.
Суть в том, что Active Record и ORM должны находиться на уровне данных вашего приложения. Если вы смешаете их с уровнем представления, вы можете столкнуться с проблемами, подобными тому, который я только что положил.
Слушайте мудрые слова Мендельта: читайте Мартина Фаулера. Он написал много книг и статей по ОО-дизайну и опубликовал хороший материал на эту тему. Кроме того, вы можете рассмотреть Anti-Patterns , а точнее - Vendor Lock In , что и происходит, когда мы делаем наше приложение зависимым от сторонних инструментов. Наконец, я написал это сообщение в блоге, рассказывающее о той же проблеме, поэтому, если хотите, проверьте его.
Надеюсь, мой ответ пригодился.