Предгенерирует ли Doctrine 2.0 классы моделей, как это делает Propel 1.5?

#php #symfony1 #doctrine

#php #symfony1 #doctrine

Вопрос:

Propel может генерировать классы на основе файла схемы. Вот некоторые из результирующих классов:

  • Объект (например, Пользователь)
  • Одноранговый узел (например, пользователь Peer)
  • Запрос (например, UserQuery)

Класс объекта (User) включает в себя средства получения и установки для всех атрибутов. Например.

 $user = new User();
echo $user->getEmailAddress();
  

Мой вопрос: может ли Doctrine 2.0 сделать это? Генерирует ли он базовые классы и добавляет ли средства получения и настройки?

Ответ №1:

Да, Doctrine 2 поддерживает генерацию схемы для классов, я предпочитаю YAML, а не XML, поэтому вот ссылка, охватывающая этоhttp://www.doctrine-project.org/docs/orm/2.0/en/reference/yaml-mapping.html

А затем с помощью инструментов командной строки Doctrine вы можете взять предоставленные файлы YML и сгенерировать http://www.doctrine-project.org/docs/orm/2.0/en/reference/tools.html

Что касается вашего второго вопроса, по большей части Doctrine имеет простые установщики / получатели, но в терминологии Doctrine они называются методами доступа.

Обновить:

Для полностью сгенерированных классов приведите таблицу типа

 user:
   id: integer   
   name: string
   active: bool
  

это были бы $user-> getName() и $user-> setName(«Джо»), $user-> SetActive(true) и $user-> getActive();

Как он генерирует эти промежуточные классы, можно в некоторой степени понять, просмотрев этот файл в репозитории Doctrine 2 githttps://github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/Tools/EntityGenerator.php

Комментарии:

1. Спасибо! — Как выглядят методы доступа? Добавляются ли они в сгенерированные классы по умолчанию?

2. Важно отметить, что Doctrine 1 и 2 требуют, чтобы APC и / или Memcache были эффективными.