Comments 12
Интересно.
Хотя использование нового языка разметки через аннотации не нравится.
Непонятно, что дает эта возможность.
А ещё странное решение с Table классами. Их реализация в Propel 1.5 намного лучше, было бы хорошо, если б Доктрин вместо того, чтобы убирать их вот так, переняли что-то у пропела.
Хотя использование нового языка разметки через аннотации не нравится.
Непонятно, что дает эта возможность.
А ещё странное решение с Table классами. Их реализация в Propel 1.5 намного лучше, было бы хорошо, если б Доктрин вместо того, чтобы убирать их вот так, переняли что-то у пропела.
На счет языка описания моделей так теперь дается выбор: нравится Yaml пожалуйста, хотите использовать Xml — нет проблем, ну а если не хотите плодить конфиги, то можно сразу в классе самой модели все описать.
На счет *Table классов решение может кому-то покажется странным, но решение интересное надо просто в нем разобраться. Теперь не будет плодиться по несколько классов на одну модель, достаточно одного класса. При этом можно создать свой кастомный класс репозитория, который в общем будет выполнять ту же роль, что делали классы *Table, к тому же вы можете свой кастомный класс репозитория, который будет использоваться для нескольких моделей.
В общем если интересно, то очень рекомендую почитать документацию на Doctrine 2, это интересно.
На счет *Table классов решение может кому-то покажется странным, но решение интересное надо просто в нем разобраться. Теперь не будет плодиться по несколько классов на одну модель, достаточно одного класса. При этом можно создать свой кастомный класс репозитория, который в общем будет выполнять ту же роль, что делали классы *Table, к тому же вы можете свой кастомный класс репозитория, который будет использоваться для нескольких моделей.
В общем если интересно, то очень рекомендую почитать документацию на Doctrine 2, это интересно.
Надо понимать, что это не АктивРекорд, как в пропеле том же, а набор совсем других паттернов (Доменная модель, репозиторий и т.д.).
А на счет аннотаций, это дело вкуса, но иногда удобнее, чтобы метаинформация была вместе с классом, а не где-то отдельно. Кроме того Аннотации и их аналоги уже плотно закрепились в java, c# и других языках, и лишним этот инструмент назвать нельзя.
А на счет аннотаций, это дело вкуса, но иногда удобнее, чтобы метаинформация была вместе с классом, а не где-то отдельно. Кроме того Аннотации и их аналоги уже плотно закрепились в java, c# и других языках, и лишним этот инструмент назвать нельзя.
>> Из кода думаю все понятно, есть 3 правила, вывод списка, добавление и удаление.
А в коде: вывод списка (link_list), добавление (add_link) и чтение (read_link).
Достаточно интересный пример для начала. Скорее бы уже наметилась какая-то стабильность в версиях библиотек, чтоб можно было начать полномасштабное изучение.
А в коде: вывод списка (link_list), добавление (add_link) и чтение (read_link).
Достаточно интересный пример для начала. Скорее бы уже наметилась какая-то стабильность в версиях библиотек, чтоб можно было начать полномасштабное изучение.
Да, «чтение», а вернее «прочитано» — это у меня вместо удаления, то есть если ссылку прочитали, то она больше не нужна в списке и поэтому удаляется.
Хотя наверное это запутывает :)
Хотя наверное это запутывает :)
Ну, что касается Доктрины, то в эти выходные запланирована первая бета, вторая на конец мая. Так что вполне можно начинать изучать.
Спасибо за пример, все здорово. Однако немного напрягает постоянно писать длинные пространства имен («Application\ReadlaterBundle\Entities\LinkRepository»), как в запросаз, так и в файлах.
Кстати да, простенький автолоадер ой как бы пригодился :)
Ну длинные имена это только, когда используется как строка. В коде есть namespace и use.
Кроме того, никто не мешает сделать что-то типа
[code]
use Application\ReadlaterBundle\Entities\LinkRepository;
//some code…
$linkRep = new LinkRepository();
$link = $em->find(get_class($linkRep), $id);
[/code]
Доктрина, же это «копия» Java'вского Hibernate, там это чуть короче записывается =)
Кроме того, никто не мешает сделать что-то типа
[code]
use Application\ReadlaterBundle\Entities\LinkRepository;
//some code…
$linkRep = new LinkRepository();
$link = $em->find(get_class($linkRep), $id);
[/code]
Доктрина, же это «копия» Java'вского Hibernate, там это чуть короче записывается =)
Теперь многое устарело, например:
теперь должно быть как-то так:
Вместо такого в роутинге:
Но Бандлы должны предоставлять дефолтную конфигурацию в XML.
PS: копаться в чужих исходниках можно "оттуда"
$em = $this->container->getDoctrine_ORM_EntityManagerService();
теперь должно быть как-то так:
$em = $this->container->get('doctrine.orm.entity_manager');
Вместо такого в роутинге:
link_list:
pattern: /
defaults: { _bundle: ReadlaterBundle, _controller: Readlater, _action: index }
можно писать так:link_list:
defaults:
_controller: "ReadlaterBundle:Readlater:index"
requirements:
_method: "GET"
Но Бандлы должны предоставлять дефолтную конфигурацию в XML.
PS: копаться в чужих исходниках можно "оттуда"
Более актуальный перевод документации
symfony.com.ua/doc/current/doctrine.html
symfony.com.ua/doc/current/doctrine.html
Sign up to leave a comment.
Symfony 2 и Doctrine 2