<?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 php hacker &#187; Buchtipps</title>
	<atom:link href="http://phphacker.net/category/buchtipps/feed/" rel="self" type="application/rss+xml" />
	<link>http://phphacker.net</link>
	<description>ein php blog</description>
	<lastBuildDate>Wed, 27 Jan 2010 12:06:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Conventions over configuration</title>
		<link>http://phphacker.net/2009/02/13/conventions-before-configuration/</link>
		<comments>http://phphacker.net/2009/02/13/conventions-before-configuration/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 06:31:48 +0000</pubDate>
		<dc:creator>Cem Derin</dc:creator>
				<category><![CDATA[Buchtipps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Theorie]]></category>

		<guid isPermaLink="false">http://phphacker.net/?p=456</guid>
		<description><![CDATA[Derzeit lese ich Agile Webdevelopment with Rails. Das Buch ist zwar von 2006, aber mir ging es auch in erster Linie um das Prinzip von Ruby on Rails. Wie dem auch sei, keine Sorge, ich werde jetzt nicht über Ruby berichten oder gar komplett auf Ruby umsteigen (obwohl ich gerne was produktives mit Rails bauen [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://ecx.images-amazon.com/images/I/51KxXNu8g3L._SL500_AA240_.jpg" alt="" width="240" height="240" />Derzeit lese ich <strong><a href="http://www.amazon.com/Agile-Web-Development-Rails-2nd/dp/0977616630/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1234504342&amp;sr=8-1">Agile Webdevelopment with Rails</a></strong>. Das Buch ist zwar von 2006, aber mir ging es auch in erster Linie um das Prinzip von <strong>Ruby on Rails</strong>. Wie dem auch sei, keine Sorge, ich werde jetzt nicht über Ruby berichten oder gar komplett auf Ruby umsteigen (obwohl ich gerne was produktives mit Rails bauen würde, hehe). Es geht mir viel mehr um eines des Kernprinzipien von Ruby on Rails: <strong>Conventions over configuration</strong>.</p>
<p>Dieses Grundprinzip ist das, was Ruby eigentlich so bekannt gemacht hat. Was dafür gesorgt hat, dass man eine Applikation mit Rails in wenigen Minuten aufbauen kann (<strong>Scaffolding</strong>) und nur noch der Feinschliff gemacht werden muss. Aber was bedeutet conventions over configuration genau und wie kann man es auf PHP anwenden?</p>
<p><span id="more-456"></span>Ruby abstrahiert bei der Webentwicklung ständig auftretende Probleme und löst diese Eiheitlich. Auf eine <strong>MVC-Struktur</strong> bezogen hätten wir folgenden Fall: Wie haben es ständig mit <strong>Modellen </strong>zu tun, die eigene <strong>Controller </strong>bekommen. Diese Modelle werden in der <strong>Datenbank</strong> gespeichert und sollen über den controller aufgelistet, angelegt und einzeln editiert werden können. Statt das also für jedes Modell immer und immer wieder von Hand zu machen, gibt es in Rails ein <strong>Script</strong>, dem man den Namen und die Properties für das Model übergibt und das alles selbst anlegt.</p>
<p>Hierbei kommt dann obiges Prinzip zum Einsatz: Convetions over configuration. Statt also in der Modellklasse anzugeben, in welcher Tabelle die Daten für dieses Modell liegen (<em>configuration</em>), nimmt die Modellklasse an, dass die Daten in einer Tabelle liegen, die dem Plural des Modells entspricht (<em>convention</em>). Das Modell &#8220;<em>article</em>&#8221; wird seine Daten also in der Tabelle &#8220;<em>articles</em>&#8221; finden.</p>
<p>Dieses Prinzip setzt sich natürlich weiter fort. Ich möchte gar nicht weiter auf das konkrete Rails-Beispiel eingehen. Ich habe das Buch noch gar nicht zuende gelesen und laufe Gefahr, hier Lösungen für Probleme vorzuschlagen, die Rails wesentlich besser gelöst hat. Viel interessanter ist die Frage: Wie führe ich das in <strong>PHP </strong>ein?</p>
<p>Obiges Beispiel ist noch sehr einfach. Die Umsetzung sollte jeder, der seine Brötchen mit PHP verdient hinbekommen. Es gibt aber meiner Meinung nach eine ganze Reihe von Fällen, in denen solche Konventionen abgelehnt werden, da sie die Applikation ihrer <strong>Flexibilität </strong>rauben: Prominentes Beispiel sind Benamungen von <strong>Tabellenspalten in Datenbanken</strong>. In der Vergangenheit musste ich häufiger erleben, dass eine Benamung von Fremdschlüsseln im Sinne von &#8220;&lt;zieltabelle&gt;_&lt;zielfeld&gt;&#8221; zzgl. evtl. führender Zieldatenbank abgelehnt wurde. Konkrete Argumente fehlten oder beruhten auf mythischen &#8220;Ich meine mal gehört zu haben &#8230; &#8221; und &#8220;da hatte ich mal Probleme mit, die ich jetzt aber nicht mehr erklären kann &#8230; &#8221; Argumenten.</p>
<p>Ich sehe leider auch immer wieder, dass <strong>Methodenparameter </strong>so angeordnet sind, dass man um häufig genutzte Parameter zu erreichen andere übergeben muss, obwohl diese sich selten Ändern oder ermittelbar wären. Um das zu vermeiden, wird hier dann häufiger auf ein <strong>Array </strong>zurückgegriffen, in dem nur die Parameter, die man setzen will übergeben werden. Das ist augenscheinlich eine gute Lösung, leider kann einem die <strong>IDE </strong>dann keine Unterstützung mehr bzgl. der Typen oder generell der <strong>DocSyntax </strong>mitgeben. Sinnvoller wäre hier aber, dass man so wenig Parameter wie möglich übergeben muss. <strong>Lediglich wenn etwas mal nicht mehr der Konvetion entspricht, sollte man auf Konfiguration zurückgreifen.</strong></p>
<p>Das beißt sich jetzt auch alles ein bisschen mit<a href="http://www.phphatesme.com/blog/qualitatssicherung/assert-null/"> Nils&#8217; <strong>Assert Null</strong> Artikel</a> <img src='http://phphacker.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://phphacker.net/2009/02/13/conventions-before-configuration/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Buchtipp: Produktiv programmieren</title>
		<link>http://phphacker.net/2009/02/01/buchtipp-produktiv-programmieren/</link>
		<comments>http://phphacker.net/2009/02/01/buchtipp-produktiv-programmieren/#comments</comments>
		<pubDate>Sun, 01 Feb 2009 07:30:48 +0000</pubDate>
		<dc:creator>Cem Derin</dc:creator>
				<category><![CDATA[Buchtipps]]></category>

		<guid isPermaLink="false">http://phphacker.net/?p=356</guid>
		<description><![CDATA[
Hiermit möchte ich heute eine neue regelmäßige Kategorie eröffnen: Meine Buchtipps. Als Bahnfahrer bin ich jemand, der viel liest. Nach dem ich morgens also meinen Newsreader zum Schweigen gebracht habe, sind Bücher oder Magazine dran (erwähnte ich eigentlich schon, dass ich zu viele Abos habe?   ). Da dann auch des öfteren Fachliteratur darunter [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-358" title="reviewbooks" src="http://phphacker.net/wp-content/uploads/2009/01/reviewbooks.jpg" alt="reviewbooks" width="1000" height="175" /></p>
<p>Hiermit möchte ich heute eine neue regelmäßige Kategorie eröffnen: <strong>Meine Buchtipps</strong>. Als Bahnfahrer bin ich jemand, der viel liest. Nach dem ich morgens also meinen Newsreader zum Schweigen gebracht habe, sind Bücher oder Magazine dran (erwähnte ich eigentlich schon, dass ich zu viele Abos habe? <img src='http://phphacker.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ). Da dann auch des öfteren <strong>Fachliteratur </strong>darunter ist, dachte ich mir: Warum nicht hier ein paar Buchtipps präsentieren? Beginnen möchte ich mit einer Leihgabe meines Arbeitskollegen <a href="http://www.chipwreck.de/blog/">Mario</a>: <a href="http://www.oreilly.de/catalog/prodproger/index.html"><strong>Produktiv programmieren</strong></a> von Neal Ford.</p>
<h2>Neil Ford: Produktiv programmieren</h2>
<p><img class="alignleft" src="http://www.oreilly.de/catalog/covers/prodproger.s.gif" alt="" width="151" height="198" />Diese Fundgrube an Optimierungstipps und geballter Erfahrung hat sich mein Arbeitskollege in der Mittagspause geholt, ich habe es auf seinem Schreibtisch entdeckt, warf einen Blick in das Inhaktsverzeichnis und war direkt vom Kapitel &#8220;<strong>böse Affen</strong>&#8221; fasziniert. Kurz aufgeschlagen und gelesen. Wow. Das liest sich gut, ist wie aus dem Alltag gegriffen und darüber hinaus auch noch amüsant. Ähnliches dachte sich mein Arbeitskollege, der das <strong>270 Seiten</strong> starke Werk schon nach ein paar Tagen wieder mitbrachte &#8211; und ich es mir krallen konnte.</p>
<p><span id="more-356"></span></p>
<p>Die ersten Kapitel lesen sich wie aus einem <strong><acronym title="Getting things done">GTD</acronym></strong>-Werk, handeln sie von Shortcuts, wie man sich auf seinem Rechner besser und schneller zurechtfindet und einer ganzen Reihe von Anekdoten. Ford erklärt, wie man Mechanismen automatisieren kann (Ford nutzt <strong>Selenium </strong>übrigens <a href="http://phphacker.net/2008/12/20/selenium-zweckentfremdet/">wie ich</a> nicht nur zum testen). Mehr und mehr wird einem jedoch bewusst, dass die Dinge, die dort beschrieben werden, einem täglich einen beträchtlichen Konzentration rauben.</p>
<p>Verhaltens-, Konzeptions- und auch praktische Programmierszenarien werden erstellt und praktisch sowie effizient gelöst. Dabei hinterfragt Ford sich selbst ständig.</p>
<p>Alles in allem ein Buch, dass ich jedem Entwickler nur empfehlen kann. Man wird sofort eine Reihe von Tipps in seinen Alltag mitnehmen und zu schätzen lernen. Damit hätten wir einen zweiten Meister der Effizienz, der den Nachnamen <strong>Ford </strong>trägt.</p>
]]></content:encoded>
			<wfw:commentRss>http://phphacker.net/2009/02/01/buchtipp-produktiv-programmieren/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
