<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: MVC &#8211; Model</title>
	<atom:link href="http://athlan.pl/mvc-model/feed/" rel="self" type="application/rss+xml" />
	<link>http://athlan.pl/mvc-model/</link>
	<description>Napisać kod zrozumiały dla komputera potrafi byle głupek. Dobrzy programiści tworzą kod zrozumiały dla człowieka...</description>
	<lastBuildDate>Mon, 05 Mar 2012 11:45:55 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
	<item>
		<title>By: procek</title>
		<link>http://athlan.pl/mvc-model/comment-page-1/#comment-6392</link>
		<dc:creator>procek</dc:creator>
		<pubDate>Tue, 01 Mar 2011 17:24:22 +0000</pubDate>
		<guid isPermaLink="false">http://athlan.pl/?p=258#comment-6392</guid>
		<description>@egz masz rację, ale po to właśnie jest ten wzorzec, aby spróbować się starać go trzymać. Zawsze można zrobić coś inaczej, ale tu chodzi też o to, aby trzymać się konwencji dzięki, której dany program może być rozbudowany przez osoby postronne.</description>
		<content:encoded><![CDATA[<p>@egz masz rację, ale po to właśnie jest ten wzorzec, aby spróbować się starać go trzymać. Zawsze można zrobić coś inaczej, ale tu chodzi też o to, aby trzymać się konwencji dzięki, której dany program może być rozbudowany przez osoby postronne.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ad4s</title>
		<link>http://athlan.pl/mvc-model/comment-page-1/#comment-6358</link>
		<dc:creator>ad4s</dc:creator>
		<pubDate>Sun, 07 Nov 2010 18:34:31 +0000</pubDate>
		<guid isPermaLink="false">http://athlan.pl/?p=258#comment-6358</guid>
		<description>najlepiej zrobić benchmark z włączonym buforowaniem output :)(aplikacja www). efekty mogą dać odpowiedź czy warto w widoku operować na modelu</description>
		<content:encoded><![CDATA[<p>najlepiej zrobić benchmark z włączonym buforowaniem output :)(aplikacja www). efekty mogą dać odpowiedź czy warto w widoku operować na modelu</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: egz</title>
		<link>http://athlan.pl/mvc-model/comment-page-1/#comment-6316</link>
		<dc:creator>egz</dc:creator>
		<pubDate>Sun, 08 Nov 2009 09:47:36 +0000</pubDate>
		<guid isPermaLink="false">http://athlan.pl/?p=258#comment-6316</guid>
		<description>&quot;dostęp do modelu powinien mieć tylko kontroler, a w żadnym wypadku widok&quot;

Nie tyle (jak HWAO zauważył) nie jest do końca prawdą, co w ogóle prawdą nie jest. Nie rozumiem jednej rzeczy. Dlaczego nadal ludzie pisząc o wzorcach narzucają mocno konkretne ich implementacje? Wzorzec jest... ekhem, WZORCEM, sposobem, pewnego rodzaju trickiem który możemy zastosować w kodzie. To skąd jest wołany model zależy od implementacji - i żeby nie być gołosłownym:

1. http://martinfowler.com/eaaCatalog/modelViewController.html WIDOK
2. wystarczy przejrzeć większe rozwiązania dla MVC żeby się przekonać na ile jeszcze sposobów można to organizować

Reasumując, ja również nie jestem zwolennikiem odwoływania się do modelu z innego miejsca niż kontroler. ALE - nie piszmy ludzią, że inna metoda jest zabroniona, a &quot;ta&quot; to jedyna słuszna, bo to bzdura.</description>
		<content:encoded><![CDATA[<p>&#8220;dostęp do modelu powinien mieć tylko kontroler, a w żadnym wypadku widok&#8221;</p>
<p>Nie tyle (jak HWAO zauważył) nie jest do końca prawdą, co w ogóle prawdą nie jest. Nie rozumiem jednej rzeczy. Dlaczego nadal ludzie pisząc o wzorcach narzucają mocno konkretne ich implementacje? Wzorzec jest&#8230; ekhem, WZORCEM, sposobem, pewnego rodzaju trickiem który możemy zastosować w kodzie. To skąd jest wołany model zależy od implementacji &#8211; i żeby nie być gołosłownym:</p>
<p>1. <a href="http://martinfowler.com/eaaCatalog/modelViewController.html" rel="nofollow">http://martinfowler.com/eaaCatalog/modelViewController.html</a> WIDOK<br />
2. wystarczy przejrzeć większe rozwiązania dla MVC żeby się przekonać na ile jeszcze sposobów można to organizować</p>
<p>Reasumując, ja również nie jestem zwolennikiem odwoływania się do modelu z innego miejsca niż kontroler. ALE &#8211; nie piszmy ludzią, że inna metoda jest zabroniona, a &#8220;ta&#8221; to jedyna słuszna, bo to bzdura.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: majk</title>
		<link>http://athlan.pl/mvc-model/comment-page-1/#comment-6210</link>
		<dc:creator>majk</dc:creator>
		<pubDate>Tue, 24 Mar 2009 18:27:19 +0000</pubDate>
		<guid isPermaLink="false">http://athlan.pl/?p=258#comment-6210</guid>
		<description>a MVC typu drugiego?

http://www.phppatterns.com/docs/design/mvc_pattern_version_2</description>
		<content:encoded><![CDATA[<p>a MVC typu drugiego?</p>
<p><a href="http://www.phppatterns.com/docs/design/mvc_pattern_version_2" rel="nofollow">http://www.phppatterns.com/docs/design/mvc_pattern_version_2</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: MWL</title>
		<link>http://athlan.pl/mvc-model/comment-page-1/#comment-6200</link>
		<dc:creator>MWL</dc:creator>
		<pubDate>Mon, 16 Mar 2009 11:31:02 +0000</pubDate>
		<guid isPermaLink="false">http://athlan.pl/?p=258#comment-6200</guid>
		<description>Bardzo fajny i przystępny artykuł.. Podstawy podstaw, no ale zawsze ;)</description>
		<content:encoded><![CDATA[<p>Bardzo fajny i przystępny artykuł.. Podstawy podstaw, no ale zawsze ;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Athlan</title>
		<link>http://athlan.pl/mvc-model/comment-page-1/#comment-6199</link>
		<dc:creator>Athlan</dc:creator>
		<pubDate>Thu, 12 Mar 2009 21:44:39 +0000</pubDate>
		<guid isPermaLink="false">http://athlan.pl/?p=258#comment-6199</guid>
		<description>@ZuLuS, Widok może pobierać dane z modelu &lt;u&gt;tylko&lt;/u&gt; za zgodą kontrolera, czyli tylko wtedy, kiedy do atrybutu widoku zostanie przypisana instancja modelu. Czyli masz rację - widok może korzystać z modelu... ale nie każdego... żeby się nie zapomniał i nie miał przez przypadek dostępu do rekordów użytkownika (hashów haseł) przy wyświetlaniu newsów.

@hwao, jeżeli chodzi o wymienialność struktur... nie dochodzi do nich często, ale miałem już 2 sytuacje, kiedy trzeba było to zrobić. Lepiej stosować się do wzorca, niżeliby przerabiać połowę aplikacji (kontroler i model, czasem widok);</description>
		<content:encoded><![CDATA[<p>@ZuLuS, Widok może pobierać dane z modelu <u>tylko</u> za zgodą kontrolera, czyli tylko wtedy, kiedy do atrybutu widoku zostanie przypisana instancja modelu. Czyli masz rację &#8211; widok może korzystać z modelu&#8230; ale nie każdego&#8230; żeby się nie zapomniał i nie miał przez przypadek dostępu do rekordów użytkownika (hashów haseł) przy wyświetlaniu newsów.</p>
<p>@hwao, jeżeli chodzi o wymienialność struktur&#8230; nie dochodzi do nich często, ale miałem już 2 sytuacje, kiedy trzeba było to zrobić. Lepiej stosować się do wzorca, niżeliby przerabiać połowę aplikacji (kontroler i model, czasem widok);</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ZuLuS</title>
		<link>http://athlan.pl/mvc-model/comment-page-1/#comment-6198</link>
		<dc:creator>ZuLuS</dc:creator>
		<pubDate>Thu, 12 Mar 2009 20:39:42 +0000</pubDate>
		<guid isPermaLink="false">http://athlan.pl/?p=258#comment-6198</guid>
		<description>Niestety muszę się nie zgodzić z tym schematem. Wynika z niego że jedyną częścią &quot;świadomą&quot; aplikacji jest kontroler (komunikacja tylko w jedną stronę kontroler-&gt;widok), a widok jest jedynie nakładką na otrzymane dane. Co jednak gdy np otrzymamy żądanie wyświetlania newsa, a na stronie wynikowej ma być poza tym info o tym kto jest zalogowany, skróty pozostałych newsów etc...? Kontroler ma się wszystkim zajmować? Jeżeli tak to wymiana widoku implikuje przeróbkę/wymianę kontrolera i tracimy zalety MVC czyli wymienialność komponentów bez wiedzy pozostałej dwójki.

Ja zawsze stosuję inną zasadę o ile model zajmuje się wymianą danych (ale nie ich validacją, itd..), kontroler ew modyfikuje dane i przekazuje sterowanie do widoku, widok pobiera (nigdy nie modyfikuje) co mu jeszcze jest potrzebne od modelu i zwraca na wyjście (HTML, CLI, XML, PDF etc...). Pozostaje kwestia komunikacji między komponentami ale to już inna bajka (całkiem rozległy temat ;)).

To tyle moich przemyśleń, temat dosyć rozległy i ciężko go zebrać w prosty sposób bez określenia środowiska w którym chce się go użyć. Sieć web jest dość specyficzna, patrząc na założenia MVC, widok zbyt często miesza się z kontrolerem.</description>
		<content:encoded><![CDATA[<p>Niestety muszę się nie zgodzić z tym schematem. Wynika z niego że jedyną częścią &#8220;świadomą&#8221; aplikacji jest kontroler (komunikacja tylko w jedną stronę kontroler-&gt;widok), a widok jest jedynie nakładką na otrzymane dane. Co jednak gdy np otrzymamy żądanie wyświetlania newsa, a na stronie wynikowej ma być poza tym info o tym kto jest zalogowany, skróty pozostałych newsów etc&#8230;? Kontroler ma się wszystkim zajmować? Jeżeli tak to wymiana widoku implikuje przeróbkę/wymianę kontrolera i tracimy zalety MVC czyli wymienialność komponentów bez wiedzy pozostałej dwójki.</p>
<p>Ja zawsze stosuję inną zasadę o ile model zajmuje się wymianą danych (ale nie ich validacją, itd..), kontroler ew modyfikuje dane i przekazuje sterowanie do widoku, widok pobiera (nigdy nie modyfikuje) co mu jeszcze jest potrzebne od modelu i zwraca na wyjście (HTML, CLI, XML, PDF etc&#8230;). Pozostaje kwestia komunikacji między komponentami ale to już inna bajka (całkiem rozległy temat ;)).</p>
<p>To tyle moich przemyśleń, temat dosyć rozległy i ciężko go zebrać w prosty sposób bez określenia środowiska w którym chce się go użyć. Sieć web jest dość specyficzna, patrząc na założenia MVC, widok zbyt często miesza się z kontrolerem.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paweł `hwao` Halicki</title>
		<link>http://athlan.pl/mvc-model/comment-page-1/#comment-6196</link>
		<dc:creator>Paweł `hwao` Halicki</dc:creator>
		<pubDate>Mon, 09 Mar 2009 17:33:02 +0000</pubDate>
		<guid isPermaLink="false">http://athlan.pl/?p=258#comment-6196</guid>
		<description>&quot;W myśl architektury MVC, dostęp do modelu powinien mieć tylko kontroler&quot;

Nie jest to do końca prawdą. Wieczorem postaram się przedstawić szersza informacje.

&quot;Model != baza danych&quot;
Też konkretnie nie określiłeś typu modelu, z tego co pamiętam jest ich parę. Dlatego nie mogę się do końca z tą tezą zgodzić.


Opisane tutaj elementy są przedstawione od strony &quot;web architektury&quot;, która jest wymuszona naturą requestu http. Należy pamiętać że jak się pisze o MVC należy też pamiętać że jest stosowane w aplikacjach systemowych.

Piszesz też ze w Modelu zdarza się zmiana źródła danych, w aplikacjach webowych bardzo rzadko do tego dochodzi, niemal nigdy. Dużo częściej zachodzi potrzeba &quot;udekorowania jakoś danych&quot;, lub też &quot;sprzątanie po operacjach&quot;, np: po usunięciu newsa, usunięcie cache.

Więcej postaram się napisać potem.</description>
		<content:encoded><![CDATA[<p>&#8220;W myśl architektury MVC, dostęp do modelu powinien mieć tylko kontroler&#8221;</p>
<p>Nie jest to do końca prawdą. Wieczorem postaram się przedstawić szersza informacje.</p>
<p>&#8220;Model != baza danych&#8221;<br />
Też konkretnie nie określiłeś typu modelu, z tego co pamiętam jest ich parę. Dlatego nie mogę się do końca z tą tezą zgodzić.</p>
<p>Opisane tutaj elementy są przedstawione od strony &#8220;web architektury&#8221;, która jest wymuszona naturą requestu http. Należy pamiętać że jak się pisze o MVC należy też pamiętać że jest stosowane w aplikacjach systemowych.</p>
<p>Piszesz też ze w Modelu zdarza się zmiana źródła danych, w aplikacjach webowych bardzo rzadko do tego dochodzi, niemal nigdy. Dużo częściej zachodzi potrzeba &#8220;udekorowania jakoś danych&#8221;, lub też &#8220;sprzątanie po operacjach&#8221;, np: po usunięciu newsa, usunięcie cache.</p>
<p>Więcej postaram się napisać potem.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
