<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
					xmlns:content="http://purl.org/rss/1.0/modules/content/"
					xmlns:wfw="http://wellformedweb.org/CommentAPI/"
					xmlns:atom="http://www.w3.org/2005/Atom"
				  >
<channel>
<atom:link rel="self"  type="application/rss+xml"  href="http://rulinux.net/rss_from_sect_4_subsect_13_thread_36984"  />
<title>rulinux.net - Форум - Web-development - Сущности Doctrine.</title>
<link>http://rulinux.net/</link>
<description><![CDATA[Портал о GNU/Linux и не только]]></description>
<image><title>rulinux.net - Форум - Web-development - Сущности Doctrine.</title>
<link>http://rulinux.net/</link>
<url>http://rulinux.net/rss_icon.png</url>
</image>
<item>
<title>Re:Сущности Doctrine.</title>
<link>https://rulinux.net/message.php?newsid=36984&amp;page=1#138984</link>
<guid>https://rulinux.net/message.php?newsid=36984&amp;page=1#138984</guid>
<pubDate>Mon, 07 May 2012 23:26:37 +0400</pubDate>
<description><![CDATA[<p>&gt; Бандал на новости, бэндал на галерею. Сорри чем эти бэндлы будут отличаться друг от другу? По хорошому и модуль личного блога не сильно будет отличаться от модуля новостей. 
<br><br>
&gt; Поясню на примере: Есть простой модуль авторизации и его класс прописан в конфигах DI. Через некоторое время сделали более навороченный модуль с OpenID и просто заменили старый класс на новый в конфигах DI. И все мы начали иметь OpеnID. Вот это модульность.
<br><br>
Именно что, есть нечто общее между всеми вхождениями. Например у них есть заголовок и как-то форматированный текст. Есть элементы галереи, новости, каменты, бог знает что ещё.
<br><br>
Что движку надо знать об этом? Что данный тип объекта существует, может сообщить как отобразить его в меню, знает что экземпляр объекта может отрисовать себя в формате ХТМЛ, данный тип может вывести форму для ввода нового экземпляра и редактирования существующего и т.п. Т.е. интерфейс у этих объектов идентичен.<br><br>
Тут напрашивается некий базовый класс, который реализует этот интерфейс.
<br><br>
Дальше мы начинаем смотреть на конкретные типы объектов и понимаем, что они отличаются и в будущем различия могут увеличиваться. Нет ни одной причины хранить скриншоты галереи на внешнем хостинге потому, что они рано или поздно оттуда пропадут, новости имеют дополнительные поля и требуют подтверждения модератором, каменты могут игнорироваться по фильтрам, а картинки в них не хранятся на сервере и т.п.  
<br><br>
Естественный подход к решению вопроса: определить [абстрактный] базовый класс, который уже содержит методы, реализующие некие общие места и расширять этот класс для конкретных типов данных. Вместо того, чтобы каждый раз писать базовый функционал заново.
<br><br>
И при рефакторинге будет проще поменять определение базового класса, а не лазать по всем реализациям вправляя там что-то.
<br><br>
И это не вся проблема. Один и тот же базовый класс, например сторадж картинок, может иметь несколько реализаций: сторадж для скриншотов, сторадж для новостей, сторадж для бложиков пользователей. Логика и политики создания, хранения и доступа к картинкам в этих стораджах могут существенно различаться. Следовательно нам может потребоваться несколько реализаций одного и того же класса хранилища, с разными свойствами. 
<br><br>
Всё это отлично легло бы на нормальную объектную модель без переписывания. При любом изменении общего функционала было бы достаточно изменить базовый класс.
<br><br>
Про DI  я так и остаюсь в непонятках - зачем инжектить классам свойства, про которые они ни сном ни духом? Или я чего-то недопонимаю?


</p>]]></description>
</item>
<item>
<title>Re:Сущности Doctrine.</title>
<link>https://rulinux.net/message.php?newsid=36984&amp;page=1#138981</link>
<guid>https://rulinux.net/message.php?newsid=36984&amp;page=1#138981</guid>
<pubDate>Mon, 07 May 2012 21:52:07 +0400</pubDate>
<description><![CDATA[<p><i>>Бандал на новости, бэндал на галерею. Сорри чем эти бэндлы будут отличаться друг от другу?</i><br> Ну сейчас они отличаются. Всё хранится в одной таблице, но для некоторых данных поля остаются пустыми. Шаблоны разные, в коде же if ($section_id == 1) ... и т.д. Отсюда, собственно, и возникла идея сделать бандлами.<br><br>Хотя, наверное, в чём-то ты прав.</p>]]></description>
</item>
<item>
<title>Re:Сущности Doctrine.</title>
<link>https://rulinux.net/message.php?newsid=36984&amp;page=1#138979</link>
<guid>https://rulinux.net/message.php?newsid=36984&amp;page=1#138979</guid>
<pubDate>Mon, 07 May 2012 20:03:46 +0400</pubDate>
<description><![CDATA[<p><i>>  Логично, что контроллер главной страницы должен быть в главном модуле (бандле). Но тогда придётся в него вписывать уже &quot;подключаемые&quot; бандлы.</i><br><br><br>Элементарно Ватсон, он должен уметь читать конфиг и подключать бандлы по заранее определенному интерфейсы, если инфы с конфига будет не достаточно.<br><br><br><br>И вообще это лично моё мнение, на кажется вас слишком захватила идея бэндлов как основы модульности, но под модульность вы понимаете не расширение функциональности сайта, а добавление нового урла в меню. Бандал на новости, бэндал на галерею. Сорри чем эти бэндлы будут отличаться друг от другу? По хорошому и модуль личного блога не сильно будет отличаться от модуля новостей. И там и там пост и его обсуждение. <br><br> Модульность на мой взгляд должна добавлять функциональность сайта, а не служить способом добавления новых страничек на сайт, отличающихся в принципе заголовком.<br><br> Поясню на примере: Есть простой модуль авторизации и его класс прописан в конфигах DI. Через некоторое время сделали более навороченный модуль с OpenID и просто заменили старый класс на новый в конфигах DI. И все мы начали иметь OpеnID. Вот это модульность.<br><br><br><br><br><br> </p>]]></description>
</item>
<item>
<title>Re:Сущности Doctrine.</title>
<link>https://rulinux.net/message.php?newsid=36984&amp;page=1#138978</link>
<guid>https://rulinux.net/message.php?newsid=36984&amp;page=1#138978</guid>
<pubDate>Mon, 07 May 2012 19:44:45 +0400</pubDate>
<description><![CDATA[<p>Идея вроде правильная, имхо, но вот я пока не сообразил, как связывать между собой бандлы, кроме как напрямую в коде. Причем указывать главный бандл в &quot;дополнительных&quot; выглядит логично, а вот наоборот - странно. Как минимум, нарушается модульность.<br><br>Например, есть у нас главная страница сайта. Сейчас на ней выводятся новости и куча всякой дополнительной инфы. Логично, что контроллер главной страницы должен быть в главном модуле (бандле). Но тогда придётся в него вписывать уже &quot;подключаемые&quot; бандлы. С сервисами тоже не до конца понятно, можно ли на них что-то сделать, чтобы это обойти.</p>]]></description>
</item>
<item>
<title>Сущности Doctrine.</title>
<link>https://rulinux.net/message.php?newsid=36984&amp;page=1#138870</link>
<guid>https://rulinux.net/message.php?newsid=36984&amp;page=1#138870</guid>
<pubDate>Mon, 07 May 2012 05:46:46 +0400</pubDate>
<description><![CDATA[<p>Итак что я предлагаю сделать сущностями: </p><p><ul></p><p><li>&nbsp;юзера</p><p><li>&nbsp;группу юзеров</p><p><li>&nbsp;блок</p><p><li>&nbsp;класс разметки</p><p><li>&nbsp;сообщение</p><p><li>&nbsp;тред</p><p><li>&nbsp;подраздел. </p><p></ul></p><p></p><p>Разделы можно делать отдельно bundle-ами(За базовую часть берется форум, новости, галерея и статьи - вынести в отдельные bundle-ы. такой подход позволит в дальнейшем, создав bundle впилить допустим личные блоги. Как я понял мое мнение  <a href="http://rulinux.net/thread_36974_page_1#msg138750">поддержал</a> <b><a href="/profile.php?user=SystemV">SystemV</a></b>).</p><p></p><p>Если я что не так понял - поправьте. Если что забыл - дополните список.</p>]]></description>
</item>
</channel>
</rss>