<?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"
	>
<channel>
	<title>Comments for Strzałek's devblog</title>
	<atom:link href="http://strzalek.net/blog/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://strzalek.net/blog</link>
	<description>Just another devblog</description>
	<pubDate>Thu, 20 Nov 2008 07:48:14 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>Comment on Hello world! by empathon</title>
		<link>http://strzalek.net/blog/1/hello-world#comment-48</link>
		<dc:creator>empathon</dc:creator>
		<pubDate>Sun, 16 Nov 2008 22:13:37 +0000</pubDate>
		<guid isPermaLink="false">#comment-48</guid>
		<description>Ano logo zacnie to prawda :)</description>
		<content:encoded><![CDATA[<p>Ano logo zacnie to prawda :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Doctrine - ORM dla PHP by @property</title>
		<link>http://strzalek.net/blog/4/doctrine-orm-dla-php#comment-47</link>
		<dc:creator>@property</dc:creator>
		<pubDate>Fri, 31 Oct 2008 16:02:07 +0000</pubDate>
		<guid isPermaLink="false">http://strzalek.net/blog/?p=4#comment-47</guid>
		<description>a poza tym:

/* @var $product Product */
$product = Doctrine::getTable(”Product”) -&#62; find(1); // Doctrine</description>
		<content:encoded><![CDATA[<p>a poza tym:</p>
<p>/* @var $product Product */<br />
$product = Doctrine::getTable(”Product”) -&gt; find(1); // Doctrine</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Doctrine - ORM dla PHP by @property</title>
		<link>http://strzalek.net/blog/4/doctrine-orm-dla-php#comment-46</link>
		<dc:creator>@property</dc:creator>
		<pubDate>Fri, 31 Oct 2008 16:00:50 +0000</pubDate>
		<guid isPermaLink="false">http://strzalek.net/blog/?p=4#comment-46</guid>
		<description>@Przemek:

http://64.233.183.104/search?q=cache:VgF7RrxWxQIJ:manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/tutorial_tags.property.pkg.html+phpdoc+%40property&#38;hl=pl&#38;ct=clnk&#38;cd=1&#38;gl=pl</description>
		<content:encoded><![CDATA[<p>@Przemek:</p>
<p><a href="http://64.233.183.104/search?q=cache:VgF7RrxWxQIJ:manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/tutorial_tags.property.pkg.html+phpdoc+%40property&amp;hl=pl&amp;ct=clnk&amp;cd=1&amp;gl=pl" rel="nofollow">http://64.233.183.104/search?q=cache:VgF7RrxWxQIJ:manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/tutorial_tags.property.pkg.html+phpdoc+%40property&amp;hl=pl&amp;ct=clnk&amp;cd=1&amp;gl=pl</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Doctrine - ORM dla PHP by Przemek</title>
		<link>http://strzalek.net/blog/4/doctrine-orm-dla-php#comment-43</link>
		<dc:creator>Przemek</dc:creator>
		<pubDate>Sun, 19 Oct 2008 10:13:58 +0000</pubDate>
		<guid isPermaLink="false">http://strzalek.net/blog/?p=4#comment-43</guid>
		<description>Mi przeszkadza inna rzecz. Otóż wygenerowane obiekty przez Propel posiadają jawnie zdefiniowane settery/gettery (czy jak kto woli mutatory/akcesory)  do wszystkich kolumn obiektu. W sumie mała rzecz, ale jeżeli używasz porządnego IDE (patrz Eclipse PDT) to posiadanie zdefiniowanych funkcji przyspiesza proces programowania (komu by się chciało pamiętać wszystkie kolumny np. ze 100 obiektów w projekcie). Zawsze lepiej jest eliminować takie błędy na etapie tworzenia kodu niż podczas długi sesji debugowania projektu.

$product = Doctrine::getTable("Product") -&#62; find(1); // Doctrine
vs
$product = ProductPeer::doSelectOne(someCriteria); // Propel

W wersji Doctrine, żaden IDE do PHP nie będzie wiedział co zawiera $product, więc żadnego podpowiadania właściwości/metod dla $product, dla wersji Propel, Eclipse wyświetli mi całą zawartość tej klasy.

Ludzie! Nie utrudniajcie sobie życia!</description>
		<content:encoded><![CDATA[<p>Mi przeszkadza inna rzecz. Otóż wygenerowane obiekty przez Propel posiadają jawnie zdefiniowane settery/gettery (czy jak kto woli mutatory/akcesory)  do wszystkich kolumn obiektu. W sumie mała rzecz, ale jeżeli używasz porządnego IDE (patrz Eclipse PDT) to posiadanie zdefiniowanych funkcji przyspiesza proces programowania (komu by się chciało pamiętać wszystkie kolumny np. ze 100 obiektów w projekcie). Zawsze lepiej jest eliminować takie błędy na etapie tworzenia kodu niż podczas długi sesji debugowania projektu.</p>
<p>$product = Doctrine::getTable(&#8221;Product&#8221;) -&gt; find(1); // Doctrine<br />
vs<br />
$product = ProductPeer::doSelectOne(someCriteria); // Propel</p>
<p>W wersji Doctrine, żaden IDE do PHP nie będzie wiedział co zawiera $product, więc żadnego podpowiadania właściwości/metod dla $product, dla wersji Propel, Eclipse wyświetli mi całą zawartość tej klasy.</p>
<p>Ludzie! Nie utrudniajcie sobie życia!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Agavi - Wprowadzenie by LBO</title>
		<link>http://strzalek.net/blog/5/agavi-wprowadzenie#comment-41</link>
		<dc:creator>LBO</dc:creator>
		<pubDate>Thu, 26 Jun 2008 08:22:42 +0000</pubDate>
		<guid isPermaLink="false">http://strzalek.net/blog/?p=5#comment-41</guid>
		<description>Cholera zjadło mi kod php.

Pisałem dokładnie o tym: http://php.net.pl/manual/pl/control-structures.alternative-syntax.php</description>
		<content:encoded><![CDATA[<p>Cholera zjadło mi kod php.</p>
<p>Pisałem dokładnie o tym: <a href="http://php.net.pl/manual/pl/control-structures.alternative-syntax.php" rel="nofollow">http://php.net.pl/manual/pl/control-structures.alternative-syntax.php</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Agavi - Wprowadzenie by LBO</title>
		<link>http://strzalek.net/blog/5/agavi-wprowadzenie#comment-40</link>
		<dc:creator>LBO</dc:creator>
		<pubDate>Thu, 26 Jun 2008 08:20:35 +0000</pubDate>
		<guid isPermaLink="false">http://strzalek.net/blog/?p=5#comment-40</guid>
		<description>Hej strzałku przyjrzałem się jeszcze raz i czy uważasz, że pobieranie danych w widoku to dobry pomysł?
Co zrobisz w przypadku błędu w modelu?
Wiem, że to tylko taka pokazówka, ale dobrze uczyć czytelników dobrych nawyków od samego poczatku.

dodatkowo: php specjalnie do zastosowania takiego jak w widoku udostepnia dodatkową notację bez klamerek.



 

To samo tyczy sie innych konstrukcji np. "if :", "endif" - kod jest czytelniejszy.</description>
		<content:encoded><![CDATA[<p>Hej strzałku przyjrzałem się jeszcze raz i czy uważasz, że pobieranie danych w widoku to dobry pomysł?<br />
Co zrobisz w przypadku błędu w modelu?<br />
Wiem, że to tylko taka pokazówka, ale dobrze uczyć czytelników dobrych nawyków od samego poczatku.</p>
<p>dodatkowo: php specjalnie do zastosowania takiego jak w widoku udostepnia dodatkową notację bez klamerek.</p>
<p>To samo tyczy sie innych konstrukcji np. &#8220;if :&#8221;, &#8220;endif&#8221; - kod jest czytelniejszy.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Agavi - Wprowadzenie by Whisller</title>
		<link>http://strzalek.net/blog/5/agavi-wprowadzenie#comment-39</link>
		<dc:creator>Whisller</dc:creator>
		<pubDate>Sat, 14 Jun 2008 12:50:53 +0000</pubDate>
		<guid isPermaLink="false">http://strzalek.net/blog/?p=5#comment-39</guid>
		<description>Bardzo fajny artykuł. Szkoda że już od bardzo dawna nie miałem czasu na programowanie z użyciem tego frameworka.

Mam nadzieję że to nie ostatni artykuł na temat Agavi :)</description>
		<content:encoded><![CDATA[<p>Bardzo fajny artykuł. Szkoda że już od bardzo dawna nie miałem czasu na programowanie z użyciem tego frameworka.</p>
<p>Mam nadzieję że to nie ostatni artykuł na temat Agavi :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Doctrine - ORM dla PHP by Michał Mech</title>
		<link>http://strzalek.net/blog/4/doctrine-orm-dla-php#comment-34</link>
		<dc:creator>Michał Mech</dc:creator>
		<pubDate>Fri, 30 May 2008 14:50:22 +0000</pubDate>
		<guid isPermaLink="false">http://strzalek.net/blog/?p=4#comment-34</guid>
		<description>Strzałek poprosiłeś o przykład więc pokuszę się o jeden.
Zarówno Doctrine jak i Propel potrafią łączyć obiekty w sensowne relacje, oczywiście jesli odpowiednio zdefiniujemy pliki schema (czy to .yml czy .xml). Załóżmy, że mamy obiekty User i Product z relacją gdzie użytkownik może mieć wiele produktów.
W Doctrine przy poprawnej definicji obiektów możemy pobrać wszystkie produkty użytkownika tak: http://phpfi.com/320776

Doctrine jest tak zaprojektowany, że oferuje nam wszędzie fluent interfaces co jest dodatkowym plusem.

A jak to wygląda w Propelu? A tak: http://phpfi.com/320777

Gdzie jest przewaga? Otóż wygenerowana funkcja getProducts() posiada opcjonalny parametr będący obiektem Criteria. Różnica błaha, ale istniejąca w całej filozofii oby ORMów. Dzięki takiemu szczegółowi w Propelu jesteśmy w stanie skorzystać z tak oczywistej funkcjonalności jak pobranie produktów usera ale ... posortowanych. Robimy to przekazując dodatkowy obiekt do funkcji. A Doctrine nie da się tego zrobić. Trzeba zapytać ORM korzystając z obiektu Doctrine_Query i samodzielnie zbudować zapytanie, co generuje sporą ilość kodu i jest niewygodne. Zanika wtedy również sens definiowania relacji między obiektami.

Ale żeby nie to że demonizuję. Doctrine posiada wiele ciekawych rzeczy, który nie ma Propel. Wspomniane wcześniej bajery ze zdarzeniami i ich nasłuchiwaniem. Fajna sprawa.</description>
		<content:encoded><![CDATA[<p>Strzałek poprosiłeś o przykład więc pokuszę się o jeden.<br />
Zarówno Doctrine jak i Propel potrafią łączyć obiekty w sensowne relacje, oczywiście jesli odpowiednio zdefiniujemy pliki schema (czy to .yml czy .xml). Załóżmy, że mamy obiekty User i Product z relacją gdzie użytkownik może mieć wiele produktów.<br />
W Doctrine przy poprawnej definicji obiektów możemy pobrać wszystkie produkty użytkownika tak: <a href="http://phpfi.com/320776" rel="nofollow">http://phpfi.com/320776</a></p>
<p>Doctrine jest tak zaprojektowany, że oferuje nam wszędzie fluent interfaces co jest dodatkowym plusem.</p>
<p>A jak to wygląda w Propelu? A tak: <a href="http://phpfi.com/320777" rel="nofollow">http://phpfi.com/320777</a></p>
<p>Gdzie jest przewaga? Otóż wygenerowana funkcja getProducts() posiada opcjonalny parametr będący obiektem Criteria. Różnica błaha, ale istniejąca w całej filozofii oby ORMów. Dzięki takiemu szczegółowi w Propelu jesteśmy w stanie skorzystać z tak oczywistej funkcjonalności jak pobranie produktów usera ale &#8230; posortowanych. Robimy to przekazując dodatkowy obiekt do funkcji. A Doctrine nie da się tego zrobić. Trzeba zapytać ORM korzystając z obiektu Doctrine_Query i samodzielnie zbudować zapytanie, co generuje sporą ilość kodu i jest niewygodne. Zanika wtedy również sens definiowania relacji między obiektami.</p>
<p>Ale żeby nie to że demonizuję. Doctrine posiada wiele ciekawych rzeczy, który nie ma Propel. Wspomniane wcześniej bajery ze zdarzeniami i ich nasłuchiwaniem. Fajna sprawa.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Agavi - Wprowadzenie by Strzałek</title>
		<link>http://strzalek.net/blog/5/agavi-wprowadzenie#comment-30</link>
		<dc:creator>Strzałek</dc:creator>
		<pubDate>Sat, 17 May 2008 10:13:23 +0000</pubDate>
		<guid isPermaLink="false">http://strzalek.net/blog/?p=5#comment-30</guid>
		<description>Z tym kolorowanie kodu i w ogóle wklejaniem kodu w notce i komentarzach coś jest nie tak. Jak będę miał chwile powalczę z tym.

&lt;strong&gt;LBO&lt;/strong&gt;: Racja. Nie wiedziałem że tak można, a jest dostępne to już od jakiegoś czasu (&lt;a href="http://trac.agavi.org/ticket/655" rel="nofollow"&gt;ticket #655&lt;/a&gt;). Zmieniłem w notce. Nadal jednak można odwoływać się "po staremu" czyli używając slotów.</description>
		<content:encoded><![CDATA[<p>Z tym kolorowanie kodu i w ogóle wklejaniem kodu w notce i komentarzach coś jest nie tak. Jak będę miał chwile powalczę z tym.</p>
<p><strong>LBO</strong>: Racja. Nie wiedziałem że tak można, a jest dostępne to już od jakiegoś czasu (<a href="http://trac.agavi.org/ticket/655" rel="nofollow">ticket #655</a>). Zmieniłem w notce. Nadal jednak można odwoływać się &#8220;po staremu&#8221; czyli używając slotów.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Agavi - Wprowadzenie by splatch</title>
		<link>http://strzalek.net/blog/5/agavi-wprowadzenie#comment-29</link>
		<dc:creator>splatch</dc:creator>
		<pubDate>Sat, 17 May 2008 08:25:47 +0000</pubDate>
		<guid isPermaLink="false">http://strzalek.net/blog/?p=5#comment-29</guid>
		<description>Bardzo się cieszę, że poruszyłeś temat Agavi. Jest to framework który prezentuje nieco inne podejście niż istniejące rozwiązania, w szczególności Zend Framework czy Symfony. Z jednej strony wiele wyniósł z Mojavi, z drugiej developerzy dodali gro możliwości, które sprawiają że praca jest rzeczywiście przyjemnością. Wystarczy wspomnieć konfigurację z użyciem XLink, wsparcie dla SOAP, rozbudowane mapowanie adresów (bije na głowę każde, które znam) i na końcu - najlepsze - Form Population Filter. :)

Artykuł bardzo fajny. Tak trzymaj!

Pozdrawiam,
Łukasz</description>
		<content:encoded><![CDATA[<p>Bardzo się cieszę, że poruszyłeś temat Agavi. Jest to framework który prezentuje nieco inne podejście niż istniejące rozwiązania, w szczególności Zend Framework czy Symfony. Z jednej strony wiele wyniósł z Mojavi, z drugiej developerzy dodali gro możliwości, które sprawiają że praca jest rzeczywiście przyjemnością. Wystarczy wspomnieć konfigurację z użyciem XLink, wsparcie dla SOAP, rozbudowane mapowanie adresów (bije na głowę każde, które znam) i na końcu - najlepsze - Form Population Filter. :)</p>
<p>Artykuł bardzo fajny. Tak trzymaj!</p>
<p>Pozdrawiam,<br />
Łukasz</p>
]]></content:encoded>
	</item>
</channel>
</rss>
