<?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: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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Der Anti-Hype &#187; Doctrine</title>
	<atom:link href="http://www.anti-hype.de/category/doctrine/feed" rel="self" type="application/rss+xml" />
	<link>http://www.anti-hype.de</link>
	<description>Zwischen Hype und Wahnsinn! (BETA)</description>
	<lastBuildDate>Sat, 24 Apr 2010 20:25:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Geschenke von der Symfony-Community</title>
		<link>http://www.anti-hype.de/2008/12/04/355</link>
		<comments>http://www.anti-hype.de/2008/12/04/355#comments</comments>
		<pubDate>Thu, 04 Dec 2008 19:50:51 +0000</pubDate>
		<dc:creator>AntiHype</dc:creator>
				<category><![CDATA[Doctrine]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[Askeet]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Jobeet]]></category>

		<guid isPermaLink="false">http://www.anti-hype.de/?p=355</guid>
		<description><![CDATA[Für alle Symfony-Entwickler gibt es mal wieder ganz viele vorweihnachtliche Geschenke. Zum einen wurde vor kurzem Symfony 1.2 veröffentlicht und zum anderen kam für Freunde von Doctrine das Symfony + Doctrine Buch raus und kann, wie gewohnt, online durchgelesen werden.
Und als wären das nicht schon genug Geschenke: Nach dem Beispiel des inzwischen schon in die [...]]]></description>
			<content:encoded><![CDATA[<p><img align="left" title="symfony" src="http://www.anti-hype.de/wp-content/uploads/2008/09/symfony.png" alt="" hspace="10" width="200" height="54" vpsace="5" />Für alle Symfony-Entwickler gibt es mal wieder ganz viele vorweihnachtliche Geschenke. Zum einen wurde vor kurzem <a href="http://www.symfony-project.org/blog/2008/12/01/symfony-1-2-is-already-available">Symfony 1.2 veröffentlicht</a> und zum anderen kam für Freunde von Doctrine das <a href="http://www.symfony-project.org/blog/2008/12/02/introducing-the-symfony-doctrine-book">Symfony + Doctrine Buch</a> raus und kann, wie gewohnt, online durchgelesen werden.</p>
<p>Und als wären das nicht schon genug Geschenke: Nach dem Beispiel des inzwischen schon in die Jahre gekommenen Adventskalender &#8220;Askeet&#8221;, einem Tutorial über 24 Tage, gibt es dieses Jahr einen neuen Adventskalender! Jobeet heißt das Projekt und die ersten vier Tage sind schon online und lohnen sich zu lesen:</p>
<ul>
<li><a href="http://www.symfony-project.org/jobeet/1_2/en/01">Jobeet &#8211; Tag 1 &#8211; Starting up the Project</a></li>
<li><a href="http://www.symfony-project.org/jobeet/1_2/en/02">Jobeet &#8211; Tag 2 &#8211; The Project</a></li>
<li><a href="http://www.symfony-project.org/jobeet/1_2/en/03">Jobeet &#8211; Tag 3 &#8211; The Data Model</a></li>
<li><a href="http://www.symfony-project.org/jobeet/1_2/en/04">Jobeet &#8211; Tag 4 &#8211; The Controller and the View</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.anti-hype.de/2008/12/04/355/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Propel vs. Doctrine #1</title>
		<link>http://www.anti-hype.de/2008/10/15/propel-vs-doctrine-1</link>
		<comments>http://www.anti-hype.de/2008/10/15/propel-vs-doctrine-1#comments</comments>
		<pubDate>Wed, 15 Oct 2008 16:56:53 +0000</pubDate>
		<dc:creator>AntiHype</dc:creator>
				<category><![CDATA[Doctrine]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Propel]]></category>
		<category><![CDATA[Symfony]]></category>

		<guid isPermaLink="false">http://www.anti-hype.de/?p=322</guid>
		<description><![CDATA[Speziell, wenn man ein neues Symfony-Projekt anfängt, kommt schnell die Frage auf: Nehme ich Propel oder Doctrine für das Object-Relational Mapping (ORM)? Seit Symfony 1.1 ist Propel nicht mehr Pflicht und auch Doctrine kann problemlos genutzt werden. Da aber beide inkompatibel zueinander sind und das wohl auch immer so bleiben wird, muss man eine Entscheidung [...]]]></description>
			<content:encoded><![CDATA[<p>Speziell, wenn man ein neues Symfony-Projekt anfängt, kommt schnell die Frage auf: Nehme ich <a href="http://propel.phpdb.org/trac/">Propel</a> oder <a href="http://www.doctrine-project.org/">Doctrine</a> für das <a href="http://de.wikipedia.org/wiki/Object-Relational_Mapping">Object-Relational Mapping</a> (ORM)? Seit Symfony 1.1 ist Propel nicht mehr Pflicht und auch Doctrine kann problemlos genutzt werden. Da aber beide inkompatibel zueinander sind und das wohl auch immer so bleiben wird, muss man eine Entscheidung treffen.</p>
<p>Ich habe mich noch nicht intensiv mit Doctrine auseinander gesetzt, aber ein paar der Features sind verdammt interessant, so dass ich in nächster Zeit mal einen genaueren Blick darauf werfen werde:</p>
<ul>
<li><strong>Geschwindigkeit</strong>: Seit Propel 1.3 auch auf <a href="http://www.php.net/PDO">PDO</a> aufsetzt, ist dies kein Kriterium mehr und Propel 1.3 scheint sogar die Nase knapp vorn zu haben, wenn es um Geschwindigkeit geht.</li>
<li><strong>Behaviors</strong>: Ein geiles Feature. Von Propel kennt man es im Zusammenspiel mit Symfony schon, dass z.B. created_at Zeilen automatisch gepflegt werden. Mit Behaviors hat Doctrine etwas ähnliches an Board, allerdings noch weitaus mächtiger. Definiere ich eine Spalte als Sluggable, wird mir automatisch dafür ein Slug(*) erzeugt. Damit entfällt viel Code, den ich sonst selber schreiben müsste. Das Versionable-Behavior ermöglich es von einer Zeile bzw. einem Objekt mehrere Versionen in der Datenbank zu verwalten. Damit lässt sich ganz einfach und unkompliziert eine Versionsverwaltung aufbauen. Noch ein paar weitere Behaviors runden das Ganze ab.</li>
<li><strong>Memcache-Driver</strong>: Geplant ist ein ähnliches Feature auch für Propel 2.0. Aber Doctrine bringt es schon mit &#8211; die Möglichkeit Objekte nicht nur in eine Datenbank zu pressen, sondern auch in einen Cache (bzw. Memcache). Für verteilte Anwendungen mit mehreren Servern bzw. einem Projekt mit Datenbankreplikationen ein Traum!</li>
<li><strong>Magic Finders</strong>: Wie oft ist die erste Handlung, nach dem generieren der Propel-Objekte, angepasste Methoden für die <em>xxx</em>Peer-Klasse zu schreiben, für Fälle bei denen Objekte nicht nur per Primary Key aus der Datenbank geholt werden sollen. Doctrine bietet mit den Magic Finders eine ganze Reihe von Möglichkeiten, das schnell zu bewerkstelligen.</li>
<li><strong>Inheritance</strong>: Das Feature gefällt mir verdammt gut. Vererbung! Möchte man zum Beispiel auf seiner Seite ein Gästebuch und an anderer Stelle Kommentare haben, so haben beide im Grunde die gleiche Basis: Eine Tabelle in die beispielsweise Name, E-Mail, Homepage und Text des Autors gespeichert werden. Aber jeweils beide, Gästebuch-Eintrag und Kommentar, haben eventuell noch zusätzliche, unterschiedliche Felder. Mit Doctrine ist es möglich eine gemeinsame Basis-Tabelle zu definieren und darauf aufbauend weitere Tabellen, die die Eigenschaft der Basis-Tabelle dann in einem Objekt vereinen. Das wird eins der ersten Features sein, die ich unbedingt mal ausprobieren möchte.</li>
<li><strong>DQL</strong>: Doctrine kommt mit einer mächtigen Sprache für Queries daher: DQL. Gerade bei etwas umfangreicheren, verschachtelten Abfragen wird das bauen eines Criteria/Criterion-Objekts mit Propel etwas umständlich. Mit DQL soll dies weitaus leichter sein.</li>
</ul>
<p>Soviel zunächst zu den, für mich wichtigen, Vorteilen von Doctrine. Es sind auf jedenfall wie gesagt genug, so dass ich mich mal intensiver mit Doctrine beschäftigen möchte. Mir sind auch ein paar Nachteile aufgefallen, bei denen ich noch genauer nachsehen muss, ob es denn welche sind. Aber diese werde ich in einem weiteren Artikel verbloggen. <img src='http://www.anti-hype.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Auch Propel plant einige geniale Features für die Version 2.0 &#8211; so z.B. die angesprochene Möglichkeit Objekte zu cachen &#8211; nur ist es halt noch in Entwicklung. <img src='http://www.anti-hype.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>* <em>Slug: Ein Slug ist z.B. für eine URL angepasster Titel eines Artikels, damit dieser lesbar bleibt und in der URL verwendet werden kann. Außerdem muss ein Slug immer eindeutig sein, im Gegensatz allerdings zum Titel eines Artikels, der häufiger vorkommen kann.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.anti-hype.de/2008/10/15/propel-vs-doctrine-1/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
