{"id":230,"date":"2010-11-20T12:08:35","date_gmt":"2010-11-20T11:08:35","guid":{"rendered":"https:\/\/d-mueller.de\/blog\/?p=230"},"modified":"2016-01-11T23:39:55","modified_gmt":"2016-01-11T22:39:55","slug":"yoda-conditions","status":"publish","type":"post","link":"https:\/\/d-mueller.de\/blog\/yoda-conditions\/","title":{"rendered":"YODA Conditions"},"content":{"rendered":"<p>Yoda dreht bekanntlich gern Satzbestandteile um. Das hat jetzt noch nichts direkt mit PHP zu tun. Z\u00e4umen wir das Pferd mal andersherum auf. Was f\u00e4llt hier auf?<\/p>\n<pre data-enlighter-language=\"php\" class=\"EnlighterJSRAW\">\r\nfunction doSomething()\r\n{\r\n    return false;\r\n}\r\n\r\n$res = doSomething();\r\n\r\nif ($res = false)\r\n{\r\n    echo &quot;1&quot;;\r\n}\r\nelse\r\n{\r\n    echo &quot;2&quot;;\r\n}\r\n<\/pre>\n<p>Der ge\u00fcbte Debugger sieht sofort: Im if haben wir eine Zuweisung und keinen Vergleich. PHP findet das voll okay, IDEs geben in der Regel einen Warnhinweis. Raus kommt im \u00dcbrigen <i>2<\/i>.<\/p>\n<p>Was w\u00e4re jetzt, wenn wir frei nach Yoda geschrieben h\u00e4tten:<\/p>\n<pre data-enlighter-language=\"php\" class=\"EnlighterJSRAW\">\r\nif (false = $res)\r\n{\r\n    echo &quot;1&quot;;\r\n}\r\nelse\r\n{\r\n    echo &quot;2&quot;;\r\n}\r\n<\/pre>\n<p><b>Parse error: syntax error, unexpected &#8218;=&#8216;<\/b>. Wunderbar! Man kann einer Konstanten (wie false) keinen Wert zuweisen, was wir hier auf Grund unseres Tippfehlers (nur ein <i>=<\/i>) versucht h\u00e4tten. Ist letztendlich eine Gew\u00f6hungssache. Wenn man QM-Tools wie den <a href=\"http:\/\/pear.php.net\/package\/PHP_CodeSniffer\/redirected\">PHP Code Sniffer<\/a> verwendet, fliegt solch ein Fehler sowieso auf, zudem hat man ja durch TDD ohnehin keine Fehler im Code, gell ;).<\/p>\n<p>Besonders umdenken muss ich bei einer Verkn\u00fcpfung von mehreren Ausdr\u00fccken im if oder <i>&gt;<\/i> und <i>&lt;<\/i>. Beispiel?<\/p>\n<pre data-enlighter-language=\"php\" class=\"EnlighterJSRAW\">\r\nif (4 &lt;= $var &amp;&amp; 10 &gt;= $var) {}\r\n<\/pre>\n<p>vs.<\/p>\n<pre data-enlighter-language=\"php\" class=\"EnlighterJSRAW\">\r\nif ($var &gt;= 4 &amp;&amp; $var &lt;= 10) {}\r\n<\/pre>\n<p>Beide Vergleiche sind vollst\u00e4ndig \u00e4quivalent, jedoch komme ich &#8211; gewohnheitsbedingt &#8211; mit dem zweiten wesentlich besser hin.<\/p>\n<div id=\"attachment_231\" style=\"width: 276px\" class=\"wp-caption alignleft\"><a href=\"https:\/\/d-mueller.de\/blog\/wp-content\/uploads\/2010\/11\/yoda.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-231\" src=\"https:\/\/d-mueller.de\/blog\/wp-content\/uploads\/2010\/11\/yoda-266x300.jpg\" alt=\"Bildquelle\" title=\"yoda\" width=\"266\" height=\"300\" class=\"size-medium wp-image-231\" srcset=\"https:\/\/d-mueller.de\/blog\/wp-content\/uploads\/2010\/11\/yoda-266x300.jpg 266w, https:\/\/d-mueller.de\/blog\/wp-content\/uploads\/2010\/11\/yoda.jpg 355w\" sizes=\"auto, (max-width: 266px) 100vw, 266px\" \/><\/a><p id=\"caption-attachment-231\" class=\"wp-caption-text\">yoda<\/p><\/div>\n<p><a href=\"http:\/\/www.empireonline.com\/images\/features\/100greatestcharacters\/photos\/25.jpg\">Bildquelle<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Yoda dreht bekanntlich gern Satzbestandteile um. Das hat jetzt noch nichts direkt mit PHP zu tun. Z\u00e4umen wir das Pferd mal andersherum auf. Was f\u00e4llt hier auf? function doSomething() { return false; } $res = doSomething(); if ($res = false) &hellip; <a href=\"https:\/\/d-mueller.de\/blog\/yoda-conditions\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,8,3],"tags":[],"class_list":["post-230","post","type-post","status-publish","format-standard","hentry","category-php","category-quicktips","category-webdev"],"_links":{"self":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/posts\/230","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/comments?post=230"}],"version-history":[{"count":0,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/posts\/230\/revisions"}],"wp:attachment":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/media?parent=230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/categories?post=230"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/tags?post=230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}