<?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>Kommentare zu: Code-Optimierung: R&#252;ckgabewerte, Fabriken, 0, NULL, false und 1</title>
	<atom:link href="http://www.phpblogger.net/2009/12/15/code-optimierung-rueckgabewerte-fabriken-0-null-false-und-1/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.phpblogger.net/2009/12/15/code-optimierung-rueckgabewerte-fabriken-0-null-false-und-1/</link>
	<description>Ein PHP Blog mit aktuellen PHP Informationen und Tricks für Entwickler.</description>
	<pubDate>Thu, 29 Jul 2010 14:27:48 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.5</generator>
		<item>
		<title>Von: PHP-Friends</title>
		<link>http://www.phpblogger.net/2009/12/15/code-optimierung-rueckgabewerte-fabriken-0-null-false-und-1/#comment-2019</link>
		<dc:creator>PHP-Friends</dc:creator>
		<pubDate>Tue, 27 Jul 2010 19:38:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.phpblogger.net/?p=524#comment-2019</guid>
		<description>Hallo!

Wie ich finde, ist dies echt Geschmackssache! Auch wenn ich die kurze Variante pr&#228;feriere(bei if(!$objekt)). Genau so wie ich "===" nur verwende, wenn es ben&#246;tigt ist.
Ansonsten ein sch&#246;ner Artikel &#252;ber soetwas eigentlich banales!</description>
		<content:encoded><![CDATA[<p>Hallo!</p>
<p>Wie ich finde, ist dies echt Geschmackssache! Auch wenn ich die kurze Variante pr&#228;feriere(bei if(!$objekt)). Genau so wie ich &#8220;===&#8221; nur verwende, wenn es ben&#246;tigt ist.<br />
Ansonsten ein sch&#246;ner Artikel &#252;ber soetwas eigentlich banales!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Y!!</title>
		<link>http://www.phpblogger.net/2009/12/15/code-optimierung-rueckgabewerte-fabriken-0-null-false-und-1/#comment-2000</link>
		<dc:creator>Y!!</dc:creator>
		<pubDate>Wed, 16 Jun 2010 21:16:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.phpblogger.net/?p=524#comment-2000</guid>
		<description>Wenn man die verschiedenen R&#252;ckgabewerte kennt, sollte man meiner Meinung nach auch eben diese testen. Das ist zum Einen minimal schneller (weil keine Typumwandlung erfolgt) und zum Anderen auch logischer.

if (preg_match(...)) {...

ist vielleicht k&#252;rzer, logischer und schneller ist aber

if (1 === preg_match(...)) {...

denn laut Definition:

"preg_match() returns the number of times pattern matches. That will be either 0 times (no match) or 1 time because preg_match()  will stop searching after the first match."

Diese dynamische Typisierung von PHP kann in vielen Situationen sinnvoll sein (beispielsweise werden ja alle Benutzereingaben als string verarbeitet), generell halte ich aber nicht viel davon. Das ist ja auch generell ein - wie ich finde - berechtigter Kritikpunkt an PHP - eben dass aus dem string "1" == true wird.</description>
		<content:encoded><![CDATA[<p>Wenn man die verschiedenen R&#252;ckgabewerte kennt, sollte man meiner Meinung nach auch eben diese testen. Das ist zum Einen minimal schneller (weil keine Typumwandlung erfolgt) und zum Anderen auch logischer.</p>
<p>if (preg_match(&#8230;)) {&#8230;</p>
<p>ist vielleicht k&#252;rzer, logischer und schneller ist aber</p>
<p>if (1 === preg_match(&#8230;)) {&#8230;</p>
<p>denn laut Definition:</p>
<p>&#8220;preg_match() returns the number of times pattern matches. That will be either 0 times (no match) or 1 time because preg_match()  will stop searching after the first match.&#8221;</p>
<p>Diese dynamische Typisierung von PHP kann in vielen Situationen sinnvoll sein (beispielsweise werden ja alle Benutzereingaben als string verarbeitet), generell halte ich aber nicht viel davon. Das ist ja auch generell ein - wie ich finde - berechtigter Kritikpunkt an PHP - eben dass aus dem string &#8220;1&#8243; == true wird.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Ein PHPler</title>
		<link>http://www.phpblogger.net/2009/12/15/code-optimierung-rueckgabewerte-fabriken-0-null-false-und-1/#comment-1999</link>
		<dc:creator>Ein PHPler</dc:creator>
		<pubDate>Sat, 05 Jun 2010 16:52:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.phpblogger.net/?p=524#comment-1999</guid>
		<description>Ich werfe dann nochmal die php-funktion emtpy() in die Runde - die ist unglaublich praktisch, wenn man nach "false"-werten abfragen will, egal welcher art sie sind.

Gr&#252;&#223;e</description>
		<content:encoded><![CDATA[<p>Ich werfe dann nochmal die php-funktion emtpy() in die Runde - die ist unglaublich praktisch, wenn man nach &#8220;false&#8221;-werten abfragen will, egal welcher art sie sind.</p>
<p>Gr&#252;&#223;e</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Manuel Grundner</title>
		<link>http://www.phpblogger.net/2009/12/15/code-optimierung-rueckgabewerte-fabriken-0-null-false-und-1/#comment-1927</link>
		<dc:creator>Manuel Grundner</dc:creator>
		<pubDate>Tue, 12 Jan 2010 17:03:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.phpblogger.net/?p=524#comment-1927</guid>
		<description>Ich finde das gerade bei Factories dieser Vergleich nicht sinnvoll ist, da eine Factory nie null zur&#252;ck geben sollte.
Wie du schon angemerkt hast, sollte die Fabrik die Exception werfen, sie ist ja auch f&#252;r das Erzeugen des Objekts verantwortlich. Wenn sie das nicht schafft soll sie eine Exception werfen.
Und wenn eine Exception nicht sinnvoll erscheint, dann sollte ein NullObject zur&#252;ckgegeben werden, das von der Basis-Klasse oder dem erwarteten Interface erbt/implementiert.
Wirkt sich auch sehr gut auf die Testbarkeit des Systems auf, und hilft den Code in der richtigen Domaine zu halten.

Lg Manuel
Ps.: Sollten trotzdem Typen&#252;berpr&#252;fungen anstehen bevorzuge ich is_null() auch wenn es nicht ganz so flott wie $object === null ist, aber die Lesbarkeit meines Erachtens verbessert wird. Es liest sich mehr wie einen Satz:
if(is_null($object))</description>
		<content:encoded><![CDATA[<p>Ich finde das gerade bei Factories dieser Vergleich nicht sinnvoll ist, da eine Factory nie null zur&#252;ck geben sollte.<br />
Wie du schon angemerkt hast, sollte die Fabrik die Exception werfen, sie ist ja auch f&#252;r das Erzeugen des Objekts verantwortlich. Wenn sie das nicht schafft soll sie eine Exception werfen.<br />
Und wenn eine Exception nicht sinnvoll erscheint, dann sollte ein NullObject zur&#252;ckgegeben werden, das von der Basis-Klasse oder dem erwarteten Interface erbt/implementiert.<br />
Wirkt sich auch sehr gut auf die Testbarkeit des Systems auf, und hilft den Code in der richtigen Domaine zu halten.</p>
<p>Lg Manuel<br />
Ps.: Sollten trotzdem Typen&#252;berpr&#252;fungen anstehen bevorzuge ich is_null() auch wenn es nicht ganz so flott wie $object === null ist, aber die Lesbarkeit meines Erachtens verbessert wird. Es liest sich mehr wie einen Satz:<br />
if(is_null($object))</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Maggus</title>
		<link>http://www.phpblogger.net/2009/12/15/code-optimierung-rueckgabewerte-fabriken-0-null-false-und-1/#comment-1900</link>
		<dc:creator>Maggus</dc:creator>
		<pubDate>Tue, 22 Dec 2009 11:31:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.phpblogger.net/?p=524#comment-1900</guid>
		<description>Moin, 

also das finde ich jetzt wiederum nicht so schlimm. is_null ist ja eine integrierte Core-Funktion. Es gibt halt im PHP-Core Funktionen, die ganz hilfreich sind gerade wenn es darum geht, wenn man mal die Sicherheit braucht, die die Typenlosigkeit leider nicht bietet. Und ob ich da jetzt per PHP::is_null oder is_null zugreife, ist mir relativ Banane. 

Ein anderes Beispiel w&#228;re array_key exists auf $_GET angewendet. Das ist ja anders gar nicht zu l&#246;sen, wenn nur eine Variable ohne Wert quasi als Flag (?test=1&#38;flag) &#252;bergeben wird. 
=&#62;Also den R&#252;ckgriff auf bestehende Funktionen der Sprache, blo&#223; weil nicht gekapselt in eine Klasse, finde ich nicht unsauber. PHP ist halt nicht Java.

Gr&#252;&#223;e ;-)</description>
		<content:encoded><![CDATA[<p>Moin, </p>
<p>also das finde ich jetzt wiederum nicht so schlimm. is_null ist ja eine integrierte Core-Funktion. Es gibt halt im PHP-Core Funktionen, die ganz hilfreich sind gerade wenn es darum geht, wenn man mal die Sicherheit braucht, die die Typenlosigkeit leider nicht bietet. Und ob ich da jetzt per PHP::is_null oder is_null zugreife, ist mir relativ Banane. </p>
<p>Ein anderes Beispiel w&#228;re array_key exists auf $_GET angewendet. Das ist ja anders gar nicht zu l&#246;sen, wenn nur eine Variable ohne Wert quasi als Flag (?test=1&amp;flag) &#252;bergeben wird.<br />
=&gt;Also den R&#252;ckgriff auf bestehende Funktionen der Sprache, blo&#223; weil nicht gekapselt in eine Klasse, finde ich nicht unsauber. PHP ist halt nicht Java.</p>
<p>Gr&#252;&#223;e ;-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: timi</title>
		<link>http://www.phpblogger.net/2009/12/15/code-optimierung-rueckgabewerte-fabriken-0-null-false-und-1/#comment-1897</link>
		<dc:creator>timi</dc:creator>
		<pubDate>Tue, 22 Dec 2009 08:57:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.phpblogger.net/?p=524#comment-1897</guid>
		<description>@ridcully: Wie bereits angesprochen kann man diese Dinge nat&#252;rlich bestens nach eigenem Gusto handhaben - trotzdem muss ich gestehen, das ich an Deiner Version wenig Gefallen finde... Ich w&#252;rde in Deinem Fall zwischen lesbar und erkennbar unterscheiden. W&#228;hrend ich den Vergleich nicht so dolle lesbar (= sprechend) finde, ist er nat&#252;rlich trotzdem eindeutig zu erkennen. Das w&#228;re er aber auch, wenn Du den Vergleich umkehrst.

Der Vorteil, das Du noch mal logisch zwischen Vergleich und Zuweisung abgrenzt, ist meiner Meinung nach bei einem typisierten Vergleich nicht notwendig. Man m&#252;sste ja gleich zwei = Zeichen vergessen. Das passiert wahrscheinlich nur sehr selten und ist in der Regel nur ein Fl&#252;chtigkeitsfehler der sehr schnell bemerkt wird.

Vor dem Fall, das Du nur ein = Zeichen vergessen wirst, sch&#252;tzt Du Dich nicht. Und dieser Fall ist wesentlich wahrscheinlicher. Auch die Auswirkung wird nicht so schnell aufzusp&#252;ren sein, wie bei einer Zuweisung - denn es bleibt ja bei einem Vergleichsoperator und der Vergleich wird sehr wahrscheinlich wie erhofft funktionieren. Wie gesagt: Geschmackssache- meinen trifft es aber definitiv nicht.

@Maggus: F&#252;r Vergleiche auf bestehende, sprechende Funktionen zur&#252;ckzugreifen ist nat&#252;rlich eine feine Sache und durchaus legitim. Damit k&#246;nnte ich mich auch anfreunden, wenn Du nicht das PHP-typisch-unsauberste machen w&#252;rdest, was PHP Dir (leider) anbietet: Globale Funktionen.

Das tr&#252;bt das Vorgehen ungemein und daher behaupte ich mal ganz frech, ist ein sauber in einer sprechenden Variable verpackter Vergleich technisch besser gel&#246;st. Aber auch hier gilt: Alles hat seine Daseins-Berechtigung - f&#252;r mich allerdgins mit dunklen Flecken. Trotzdem Danke f&#252;r den interessanten Hinweis!</description>
		<content:encoded><![CDATA[<p>@ridcully: Wie bereits angesprochen kann man diese Dinge nat&#252;rlich bestens nach eigenem Gusto handhaben - trotzdem muss ich gestehen, das ich an Deiner Version wenig Gefallen finde&#8230; Ich w&#252;rde in Deinem Fall zwischen lesbar und erkennbar unterscheiden. W&#228;hrend ich den Vergleich nicht so dolle lesbar (= sprechend) finde, ist er nat&#252;rlich trotzdem eindeutig zu erkennen. Das w&#228;re er aber auch, wenn Du den Vergleich umkehrst.</p>
<p>Der Vorteil, das Du noch mal logisch zwischen Vergleich und Zuweisung abgrenzt, ist meiner Meinung nach bei einem typisierten Vergleich nicht notwendig. Man m&#252;sste ja gleich zwei = Zeichen vergessen. Das passiert wahrscheinlich nur sehr selten und ist in der Regel nur ein Fl&#252;chtigkeitsfehler der sehr schnell bemerkt wird.</p>
<p>Vor dem Fall, das Du nur ein = Zeichen vergessen wirst, sch&#252;tzt Du Dich nicht. Und dieser Fall ist wesentlich wahrscheinlicher. Auch die Auswirkung wird nicht so schnell aufzusp&#252;ren sein, wie bei einer Zuweisung - denn es bleibt ja bei einem Vergleichsoperator und der Vergleich wird sehr wahrscheinlich wie erhofft funktionieren. Wie gesagt: Geschmackssache- meinen trifft es aber definitiv nicht.</p>
<p>@Maggus: F&#252;r Vergleiche auf bestehende, sprechende Funktionen zur&#252;ckzugreifen ist nat&#252;rlich eine feine Sache und durchaus legitim. Damit k&#246;nnte ich mich auch anfreunden, wenn Du nicht das PHP-typisch-unsauberste machen w&#252;rdest, was PHP Dir (leider) anbietet: Globale Funktionen.</p>
<p>Das tr&#252;bt das Vorgehen ungemein und daher behaupte ich mal ganz frech, ist ein sauber in einer sprechenden Variable verpackter Vergleich technisch besser gel&#246;st. Aber auch hier gilt: Alles hat seine Daseins-Berechtigung - f&#252;r mich allerdgins mit dunklen Flecken. Trotzdem Danke f&#252;r den interessanten Hinweis!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Maggus</title>
		<link>http://www.phpblogger.net/2009/12/15/code-optimierung-rueckgabewerte-fabriken-0-null-false-und-1/#comment-1892</link>
		<dc:creator>Maggus</dc:creator>
		<pubDate>Mon, 21 Dec 2009 19:32:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.phpblogger.net/?p=524#comment-1892</guid>
		<description>Moin,

ich bevorzuge in diesem Falle 
is_null($objekt) //null
is_numeric($objekt) //0
und dergleichen. 

Spricht mich irgendwie eher an und wirkt imho nicht so PHP-typisch unsauber</description>
		<content:encoded><![CDATA[<p>Moin,</p>
<p>ich bevorzuge in diesem Falle<br />
is_null($objekt) //null<br />
is_numeric($objekt) //0<br />
und dergleichen. </p>
<p>Spricht mich irgendwie eher an und wirkt imho nicht so PHP-typisch unsauber</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: ridcully</title>
		<link>http://www.phpblogger.net/2009/12/15/code-optimierung-rueckgabewerte-fabriken-0-null-false-und-1/#comment-1891</link>
		<dc:creator>ridcully</dc:creator>
		<pubDate>Mon, 21 Dec 2009 15:45:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.phpblogger.net/?p=524#comment-1891</guid>
		<description>Ich bevorzuge hier lieber (null === $objekt), denn hier ist eindeutig lesbar, dass ich im fehler erwarte, dass null zur&#252;ck kommt. der verwendete code impliziert also bereits den typ, den ich im fehler erwarte.

au&#223;erdem wird dadurch, dass das objekt ans ende gestellt wird, gleich vorgebeugt, dass eine zuweisung durch typo entsteht. null = $objekt gibt eine fehlermeldung im interpreter, wohingegen $objekt = null eine korrekt zuweisung w&#228;re.</description>
		<content:encoded><![CDATA[<p>Ich bevorzuge hier lieber (null === $objekt), denn hier ist eindeutig lesbar, dass ich im fehler erwarte, dass null zur&#252;ck kommt. der verwendete code impliziert also bereits den typ, den ich im fehler erwarte.</p>
<p>au&#223;erdem wird dadurch, dass das objekt ans ende gestellt wird, gleich vorgebeugt, dass eine zuweisung durch typo entsteht. null = $objekt gibt eine fehlermeldung im interpreter, wohingegen $objekt = null eine korrekt zuweisung w&#228;re.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: timi</title>
		<link>http://www.phpblogger.net/2009/12/15/code-optimierung-rueckgabewerte-fabriken-0-null-false-und-1/#comment-1878</link>
		<dc:creator>timi</dc:creator>
		<pubDate>Tue, 15 Dec 2009 16:46:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.phpblogger.net/?p=524#comment-1878</guid>
		<description>@Sascha: Ja das ist tats&#228;chlich Geschmackssache - ich gebe Dir Recht: Auch mir gef&#228;llt wie im Artikel beschrieben, die kurze Variante besser...</description>
		<content:encoded><![CDATA[<p>@Sascha: Ja das ist tats&#228;chlich Geschmackssache - ich gebe Dir Recht: Auch mir gef&#228;llt wie im Artikel beschrieben, die kurze Variante besser&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Sascha Presnac</title>
		<link>http://www.phpblogger.net/2009/12/15/code-optimierung-rueckgabewerte-fabriken-0-null-false-und-1/#comment-1875</link>
		<dc:creator>Sascha Presnac</dc:creator>
		<pubDate>Tue, 15 Dec 2009 10:22:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.phpblogger.net/?p=524#comment-1875</guid>
		<description>Sehr sch&#246;ner Artikel, gl&#228;nzt vor pragmatismus, ich mag das.
Ein Kommentar zur Wrapper-Variable: In deinem Fall wird bei $objekt_nicht_verf&#252;gbar das $objekt nur negiert, d.h. wenn deine $objekt false ist klappt das ganze gut mit der Lesbarkeit. Allerdings finde ich, es ist besser lesbar, einfach ein !$objekt zu schreiben, damit dr&#252;ckst du ja alles aus und es ist zudem viel k&#252;rzer.</description>
		<content:encoded><![CDATA[<p>Sehr sch&#246;ner Artikel, gl&#228;nzt vor pragmatismus, ich mag das.<br />
Ein Kommentar zur Wrapper-Variable: In deinem Fall wird bei $objekt_nicht_verf&#252;gbar das $objekt nur negiert, d.h. wenn deine $objekt false ist klappt das ganze gut mit der Lesbarkeit. Allerdings finde ich, es ist besser lesbar, einfach ein !$objekt zu schreiben, damit dr&#252;ckst du ja alles aus und es ist zudem viel k&#252;rzer.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
