<?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>Onlineabteilung &#187; PHP</title>
	<atom:link href="http://www.onlineabteilung.de/blog/tag/php/feed" rel="self" type="application/rss+xml" />
	<link>http://www.onlineabteilung.de/blog</link>
	<description>Die Onlineabteilung informiert über Web-Themen</description>
	<lastBuildDate>Thu, 14 Jan 2010 13:52:40 +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>Request-Handling in Webanwendungen</title>
		<link>http://www.onlineabteilung.de/blog/request-handling-in-webanwendungen/63</link>
		<comments>http://www.onlineabteilung.de/blog/request-handling-in-webanwendungen/63#comments</comments>
		<pubDate>Thu, 05 Mar 2009 20:35:18 +0000</pubDate>
		<dc:creator>Jens Arps</dc:creator>
				<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Requests]]></category>
		<category><![CDATA[Webanwendung]]></category>

		<guid isPermaLink="false">http://www.onlineabteilung.de/blog/?p=63</guid>
		<description><![CDATA[Das Verwalten der Requests (also der Anfragen über die Methoden GET und POST; andere Methoden wie PUT oder HEAD spielen hier keine Rolle) ist eine immer wiederkehrende Aufgabe in Rich Internet Applications.
Der direkte Zugriff auf die Requests unter PHP auf die Variablen $_POST und $_GET ist nicht nur unschön, sondern vor Allem unhandlich und unflexibel. [...]]]></description>
			<content:encoded><![CDATA[<p>Das Verwalten der Requests (also der Anfragen über die Methoden GET und POST; andere Methoden wie PUT oder HEAD spielen hier keine Rolle) ist eine immer wiederkehrende Aufgabe in Rich Internet Applications.</p>
<p>Der direkte Zugriff auf die Requests unter PHP auf die Variablen $_POST und $_GET ist nicht nur unschön, sondern vor Allem unhandlich und unflexibel. Allein dass Überprüfen der abzufragenden Variablen mit <span class="codeContainer"><code>empty($_POST['key'])</code></span> oder <span class="codeContainer"><code>isset(...)</code></span> ist unübersichtlich und verbraucht unnötig Code. Vorsicht beim Zugriff über $_REQUEST; zu den oben genannten Problemen kommt hinzu, dass in $_REQUEST auch Cookie-Daten enthalten sind.</p>
<p>Aus diesem Grund arbeiten viele Programmierer mit einer Komponente, die das Lesen und Setzen dieser Variablen vereinfacht und vereinheitlicht. Leider haben viele dieser Komponenten Fehler oder sind unhandlich aufgebaut, so dass der Umgang mit ihnen die Arbeit letzendlich doch nicht vereinfacht.</p>
<p><span id="more-63"></span></p>
<p>Daher möchte ich an dieser Stelle die Request-Komponente vorstellen, die ich schon seit geraumer Zeit benutze, und die mich noch nie im Stich gelassen hat. Es ist ein einfacher, grundlegender Requester, der nach Belieben erweitert werden kann, aber alle grundlegenden Anforderungen an eine solche Komponente erfüllt. Der Code ist in PHP geschrieben, dürfte sich aber in kürzester Zeit in jede andere Sprache portieren lassen.</p>
<p>Der Requester implementiert das Singleton-Designpattern – was für diese Aufgabe wie geschaffen ist. Man muss im bootstrapping-Prozess der Applikation einmal die Methode collectRequests() aufrufen:</p>
<div class="codeContainer"><code><br />
// file: bootstrap.php<br />
// (...)<br />
// start your autoloader oder require the file directly</code></p>
<p><code>YourProjectName_Requests::getInstance()-&gt;collectRequests();<br />
// (...)</code></div>
<p>Später dann stehen die Methoden zum bequemen Umgang mit POST und GET Variablen zur Verfügung:</p>
<div class="codeContainer"><code><br />
// file: YourProjectName_SomeClass.php</code></p>
<p><code>$key = YourProjectName_Requests::getInstance()-&gt;getIfPost('key');</code></p>
<p><code>if(!$key)<br />
// (...)</code></p>
<p><code>switch($key)<br />
{<br />
// (...)<br />
}</code></div>
<p>Oder, je nach Anwendungsfall, eben direkt über eine Referenz:</p>
<div class="codeContainer"><code><br />
$this-&gt;requests = YourProjectName_Requests::getInstance();<br />
// (...)<br />
$result = $this-&gt;requests-&gt;set('otherKey','newValue','post');<br />
</code></div>
<p>Im wesentlichen stehen alle grundlegenden Methoden für den Umgang mit Requests zur Verfügung (get, set, conditional get, method check). Außer einer unset-Methode: eine Requests-Variable zu &#8216;unsetten&#8217; ist schlechter Stil – der bessere Weg ist es, ihren Wert auf null zu setzen.</p>
<p>Darauf aufbauend, kann man den Requester dann mit Allem ausstatten, was man für sein eigenes Projekt benötigt. Der Code ist dokumentiert und einfach zu erweitern.</p>
<p>Und so funktioniert&#8217;s: Einfach herunterladen, die Dateiendung .txt entfernen, einen passenden Klassen-Namen auswählen und loslegen.</p>
<p>Download: <a href="http://www.onlineabteilung.de/blog/wp-content/uploads/2009/03/requests.php.txt">requests.php.txt</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.onlineabteilung.de/blog/request-handling-in-webanwendungen/63/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
