<?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>Kommentare zu: PHP Entwurfsmuster: Observer</title>
	<atom:link href="http://www.phphatesme.com/blog/softwaretechnik/entwurfsmuster-observer/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.phphatesme.com/blog/softwaretechnik/entwurfsmuster-observer/</link>
	<description>PhpHatesMe, but that&#039;s ok!</description>
	<lastBuildDate>Mon, 06 Feb 2012 20:59:49 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>Von: xafford</title>
		<link>http://www.phphatesme.com/blog/softwaretechnik/entwurfsmuster-observer/comment-page-1/#comment-86156</link>
		<dc:creator>xafford</dc:creator>
		<pubDate>Sun, 29 Jan 2012 18:00:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=2695#comment-86156</guid>
		<description>Noch ein vielleicht gängigeres Beispiel für das Observer-Pattern in PHP:

Bei einer Webseite mit relativ hohen Zugriffszahlen wird man früher oder später gezwungen sein ein Caching zu implementieren und die HTML-Ausgabe für eine gewisse Zeit direkt auszuliefern, anstatt eine Seite jedes Mal neu zu erstellen. Gängiger Weg ist hier diese Ausgabe direkt als HTML mit einer gewissen Lebenszeit im Dateisystem abzulegen.

Nehmen wir nun mal ein Forum an. Eine Forenseite ist so lange gültig, bis ein neuer Eintrag kommt, ein Eintrag geändert wird oder eine Antwort erscheint.

Jetzt kann man natürlich das ganze von Hand zu Fuß fest im Code verdrahten und bei der Erstellung eines neuen Inhaltes alle zugehörigen Dateien direkt löschen. Das klappt ganz toll, bis sich die Struktur des Caches ändert, oder eine neue Art der Ausgabe der Inhalte hinzu kommt.

Sinnvoller ist es da, das Caching auszulagern, womit man vor dem Problem steht, wie der Cache erfährt dass etwas geändert wurde und gleichzeitig den Aufwand gering hält, also nicht pauschal alle Dateien im Cache löschen muss.

Hier bietet sich das Observer-Pattern an indem der Cache als Observer im Subject (den Beiträgen) registiert wird, denn nur der Cache weiß, was wo gecached wurde und wieviel gelöscht werden muss, wenn sich ein Inhalt ändert.

Im Gegensatz zur Möglichkeit die Cache-Änderung im Script, welches einen neuen Beitrag annimmt anzustoßen bietet das Observer-Pattern hier eine viel größere Flexibilität, da es die Einführung neuer Arten von Inhalte aus der Verarbeitung dieser heraus hält.</description>
		<content:encoded><![CDATA[<p>Noch ein vielleicht gängigeres Beispiel für das Observer-Pattern in PHP:</p>
<p>Bei einer Webseite mit relativ hohen Zugriffszahlen wird man früher oder später gezwungen sein ein Caching zu implementieren und die HTML-Ausgabe für eine gewisse Zeit direkt auszuliefern, anstatt eine Seite jedes Mal neu zu erstellen. Gängiger Weg ist hier diese Ausgabe direkt als HTML mit einer gewissen Lebenszeit im Dateisystem abzulegen.</p>
<p>Nehmen wir nun mal ein Forum an. Eine Forenseite ist so lange gültig, bis ein neuer Eintrag kommt, ein Eintrag geändert wird oder eine Antwort erscheint.</p>
<p>Jetzt kann man natürlich das ganze von Hand zu Fuß fest im Code verdrahten und bei der Erstellung eines neuen Inhaltes alle zugehörigen Dateien direkt löschen. Das klappt ganz toll, bis sich die Struktur des Caches ändert, oder eine neue Art der Ausgabe der Inhalte hinzu kommt.</p>
<p>Sinnvoller ist es da, das Caching auszulagern, womit man vor dem Problem steht, wie der Cache erfährt dass etwas geändert wurde und gleichzeitig den Aufwand gering hält, also nicht pauschal alle Dateien im Cache löschen muss.</p>
<p>Hier bietet sich das Observer-Pattern an indem der Cache als Observer im Subject (den Beiträgen) registiert wird, denn nur der Cache weiß, was wo gecached wurde und wieviel gelöscht werden muss, wenn sich ein Inhalt ändert.</p>
<p>Im Gegensatz zur Möglichkeit die Cache-Änderung im Script, welches einen neuen Beitrag annimmt anzustoßen bietet das Observer-Pattern hier eine viel größere Flexibilität, da es die Einführung neuer Arten von Inhalte aus der Verarbeitung dieser heraus hält.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Wie erweitert man richtig? &#124; PHP hates me - Der PHP Blog</title>
		<link>http://www.phphatesme.com/blog/softwaretechnik/entwurfsmuster-observer/comment-page-1/#comment-54870</link>
		<dc:creator>Wie erweitert man richtig? &#124; PHP hates me - Der PHP Blog</dc:creator>
		<pubDate>Fri, 11 Feb 2011 06:02:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=2695#comment-54870</guid>
		<description>[...] Events: Eigentlich genau das gleiche, wie bei den Plugins, nur noch ein wenig flexibler. Statt zu sagen, an welchen n Stellen ich nun etwas einhängen kann/muss, kann sich hier jedes Plugin aussuchen worauf es reagiert. Natürlich muss die Applikation hierfür auch nach außen mitgeben, dass etwas passiert ist. Vielleicht sollte man sich hierzu mal den Event Dispatcher der Symfony Components anschauen. Aber eigentlich ist das ganze Eventgeraffel nichts anderes als das Observer-Pattern. [...]</description>
		<content:encoded><![CDATA[<p>[...] Events: Eigentlich genau das gleiche, wie bei den Plugins, nur noch ein wenig flexibler. Statt zu sagen, an welchen n Stellen ich nun etwas einhängen kann/muss, kann sich hier jedes Plugin aussuchen worauf es reagiert. Natürlich muss die Applikation hierfür auch nach außen mitgeben, dass etwas passiert ist. Vielleicht sollte man sich hierzu mal den Event Dispatcher der Symfony Components anschauen. Aber eigentlich ist das ganze Eventgeraffel nichts anderes als das Observer-Pattern. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Andre Salmon</title>
		<link>http://www.phphatesme.com/blog/softwaretechnik/entwurfsmuster-observer/comment-page-1/#comment-51391</link>
		<dc:creator>Andre Salmon</dc:creator>
		<pubDate>Wed, 29 Dec 2010 14:29:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=2695#comment-51391</guid>
		<description>Da ich gerade so durch das Web gegoogelt bin um Informationen zu dem Observer-Pattern zu bekommen habe ich diese alten Artikel gefunden.

Was mir dabei aufgefallen ist was der Parameter &quot;$notificationType&quot; in der Funktion &quot;notify&quot; des Observers da zu suchen hat. Somit ist es dem Oberserver also möglich zu überprüfen von welcher Funktion er aufgerufen wurde.

Ich finde das verfehlt doch irgendwie den Zweck des Patterns und kommt doch dann eher dem EventDispatching näher, oder?

Ich würde es auch am liebsten so anwenden da ich genau vor so einen Problem stehe doch ich komm mir dabei so &quot;dirty&quot; vor als wenn ich das Pattern zum EventDipatching misshandeln würde.</description>
		<content:encoded><![CDATA[<p>Da ich gerade so durch das Web gegoogelt bin um Informationen zu dem Observer-Pattern zu bekommen habe ich diese alten Artikel gefunden.</p>
<p>Was mir dabei aufgefallen ist was der Parameter &#8220;$notificationType&#8221; in der Funktion &#8220;notify&#8221; des Observers da zu suchen hat. Somit ist es dem Oberserver also möglich zu überprüfen von welcher Funktion er aufgerufen wurde.</p>
<p>Ich finde das verfehlt doch irgendwie den Zweck des Patterns und kommt doch dann eher dem EventDispatching näher, oder?</p>
<p>Ich würde es auch am liebsten so anwenden da ich genau vor so einen Problem stehe doch ich komm mir dabei so &#8220;dirty&#8221; vor als wenn ich das Pattern zum EventDipatching misshandeln würde.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Don Zampano</title>
		<link>http://www.phphatesme.com/blog/softwaretechnik/entwurfsmuster-observer/comment-page-1/#comment-34419</link>
		<dc:creator>Don Zampano</dc:creator>
		<pubDate>Sat, 08 Aug 2009 00:24:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=2695#comment-34419</guid>
		<description>@PHPDave
&quot;Ich persönlich finde derzeit jedoch keine Anwendung für dieses Entwurfsmuster, ich bin und bleibe Fan von Singleton&quot;

Äh...man sucht nicht nach Anwendungen für Patterns, sondern nach Patterns, die ein konkretes Problem einer Anwendung lösen können.

Bsp: 
Ich muss einen Nagel ins Holz schlagem - Ah, das Hammer Pattern!
vs.
Ich habe einen Hammer - was mach ich nu damit?

Und Singletons gelten, zumindest oder mindestens wenn man testgetrieben entwickelt, als Anti-Pattern. Und das nicht zu Unrecht. Ist wohl so populär, weil es einfach zu verstehen ist und das obige Hammer-Problem von hinten rum angeht.
Je komplexer die Dinge werden, desto mehr sieht man aber, dass das Pattern meist für die Katz ist und nicht wirklich hilft.

Cheers!</description>
		<content:encoded><![CDATA[<p>@PHPDave<br />
&#8220;Ich persönlich finde derzeit jedoch keine Anwendung für dieses Entwurfsmuster, ich bin und bleibe Fan von Singleton&#8221;</p>
<p>Äh&#8230;man sucht nicht nach Anwendungen für Patterns, sondern nach Patterns, die ein konkretes Problem einer Anwendung lösen können.</p>
<p>Bsp:<br />
Ich muss einen Nagel ins Holz schlagem &#8211; Ah, das Hammer Pattern!<br />
vs.<br />
Ich habe einen Hammer &#8211; was mach ich nu damit?</p>
<p>Und Singletons gelten, zumindest oder mindestens wenn man testgetrieben entwickelt, als Anti-Pattern. Und das nicht zu Unrecht. Ist wohl so populär, weil es einfach zu verstehen ist und das obige Hammer-Problem von hinten rum angeht.<br />
Je komplexer die Dinge werden, desto mehr sieht man aber, dass das Pattern meist für die Katz ist und nicht wirklich hilft.</p>
<p>Cheers!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Nils Langner</title>
		<link>http://www.phphatesme.com/blog/softwaretechnik/entwurfsmuster-observer/comment-page-1/#comment-30724</link>
		<dc:creator>Nils Langner</dc:creator>
		<pubDate>Thu, 07 May 2009 06:16:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=2695#comment-30724</guid>
		<description>@PHPDave: Vielen Dank, habe es behoben. Singleton ist auch ein schönes Muster, wenn man es verwenden kann. Schau dir mal dependency injetion an, vielleicht ist dies auch was für dich.</description>
		<content:encoded><![CDATA[<p>@PHPDave: Vielen Dank, habe es behoben. Singleton ist auch ein schönes Muster, wenn man es verwenden kann. Schau dir mal dependency injetion an, vielleicht ist dies auch was für dich.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: PHPDave</title>
		<link>http://www.phphatesme.com/blog/softwaretechnik/entwurfsmuster-observer/comment-page-1/#comment-30703</link>
		<dc:creator>PHPDave</dc:creator>
		<pubDate>Wed, 06 May 2009 21:13:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=2695#comment-30703</guid>
		<description>Ein weiterer klitzekleiner Fehler ist ein Tippfehler in der foreach-Schleife von notifyObservers.
Da iterierst du &quot;$this-&gt;obsersvers&quot; obwohl es $this-&gt;observers heißen sollte. Ist nur ein klitzeklitzekleiner Fehler.

Ich persönlich finde derzeit jedoch keine Anwendung für dieses Entwurfsmuster, ich bin und bleibe Fan von Singleton :)</description>
		<content:encoded><![CDATA[<p>Ein weiterer klitzekleiner Fehler ist ein Tippfehler in der foreach-Schleife von notifyObservers.<br />
Da iterierst du &#8220;$this-&gt;obsersvers&#8221; obwohl es $this-&gt;observers heißen sollte. Ist nur ein klitzeklitzekleiner Fehler.</p>
<p>Ich persönlich finde derzeit jedoch keine Anwendung für dieses Entwurfsmuster, ich bin und bleibe Fan von Singleton <img src='http://www.phphatesme.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Dominik Jungowski</title>
		<link>http://www.phphatesme.com/blog/softwaretechnik/entwurfsmuster-observer/comment-page-1/#comment-30674</link>
		<dc:creator>Dominik Jungowski</dc:creator>
		<pubDate>Wed, 06 May 2009 09:18:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=2695#comment-30674</guid>
		<description>&quot;Vielleicht ist euch ja aufgefallen, dass das Hühnchen nicht weiss, dass es einen Ofen oder ähnliches gibt. &quot;

Spätestens, wenn das Hühnchen im Ofen ist, weiss es dass es so etwas gibt! ;D

In deinem Observer hast du übrigens einen Fehler. Dort rufst du die $chicken Methode getTemparature() auf, richtig wäre aber getInnerTemperature()</description>
		<content:encoded><![CDATA[<p>&#8220;Vielleicht ist euch ja aufgefallen, dass das Hühnchen nicht weiss, dass es einen Ofen oder ähnliches gibt. &#8221;</p>
<p>Spätestens, wenn das Hühnchen im Ofen ist, weiss es dass es so etwas gibt! ;D</p>
<p>In deinem Observer hast du übrigens einen Fehler. Dort rufst du die $chicken Methode getTemparature() auf, richtig wäre aber getInnerTemperature()</p>
]]></content:encoded>
	</item>
</channel>
</rss>

