PHP: Выбор ORM для будущего расширения и изменений? - PullRequest
1 голос
/ 20 августа 2010

Я родом из Codeigniter MVC, с которым мы работаем уже некоторое время.Пришло время развернуть нашу собственную инфраструктуру для большого проекта, но мы подошли к части базы данных и сразу немного запутались.
В Codeigniter мы использовали ActiveRecord для всех соединений с базами данных SQL, что хорошо работало, но поскольку это не отдельная часть, мы находимся в поиске решения ORM, чтобы написать как можно меньше кода в наших моделях для получения наших данных из баз данных.

Мы рассмотрели основные альтернативы, включая Doctrine2и Propel, но нас очень пугает тот факт, что эти файлы конфигурации и насколько обширны эти библиотеки на самом деле.

Действительно ли это разумно с точки зрения обслуживания выбрать ORM, который требует редактирования вгораздо больше файлов, чем очевидных MVC, когда происходит изменение схемы?

Ответы [ 3 ]

4 голосов
/ 20 августа 2010

По правде говоря, propel и доктрина, пожалуй, лучшие php ORM на рынке на данный момент, я использую propel, который поставляется в комплекте с фреймворком Symfony, но как только вы ознакомитесь с документацией, это действительно имеет огромное значение, и оба ORM знают, как держаться подальше, когда вам нужно родной sql. Я бы порекомендовал вам выбрать один (propel / doctrine) из двух и просто потратить время и просмотреть документацию, конечный результат того стоит.

2 голосов
/ 20 августа 2010

Ну, на самом деле для Propel вам не нужно редактировать много файлов при изменении схемы (если вы придерживаетесь базового использования ORM). Вы просто обновляете файл схемы базы данных (schema.xml), затем запускаете propel-gen, и этот инструмент создаст необходимые классы Propel для вас в указанной вами папке (в build.properties).

Классы BaseXXX в папке om никогда не следует редактировать, поскольку они будут перезаписываться каждый раз, когда вы меняете схему и запускаете propel-gen. Просто добавьте свою бизнес-логику к классам в главной папке (которые по умолчанию наследуют базовые классы), они создаются только один раз и впоследствии не будут затронуты propel-gen.

1 голос
/ 21 августа 2010

А с доктриной вы можете просто положиться на файл schema.yml (формат YAML).Используя этот файл, doctrine может генерировать SQL, классы моделей, фильтры, .... все (конечно, вы можете изменить файлы, если хотите, но в большинстве случаев вы этого не сделаете)

...